02-Win10+VScode+Msys2+Mingw64+GFortran+Git


<center>Win10+VScode+Msys2+Mingw64+GFortran+Git</center>

必要信息

img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

Fortran语言20分钟入个门,面向科学计算的、成熟的编译型语言,windows

方流返

https://www.bilibili.com/video/BV1D3411x7aj?spm_id_from=333.337.search-card.all.click

完整流程

win10 bash

img

img

img

下载编译器

img

  • 下载个VS不香嘛

img

下载编辑器

img

设置路径

img

math.f90

img

img

  • 包含函数

main.f90

img

单个文件编译

img

fortran

gfortran -c math.f90   !> -c 表示只编译不链接,生成.o文件,二进制文件
gfortran -c main.f90
gfortran math.o main.o  !> 顺序很重要,会生成一个可执行文件
./a  !> 运行可执行文件

img

fortran

gfortran math.f90 main.f90 #编译并连接?,生成一个可执行文件
./a

部署问题

linux下 idd ./a查找运行依赖

img

使用 -static静态连接,额外的东西尽量打包到可执行文件,利于部署到其它电脑

img

  • 这里显示的依赖都是windows电脑都有的;

img

  • -static的文件是比较大的

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

现代Fortran编程:拥抱开源Fortran环境,高效使用现代Fortran

https://www.bilibili.com/video/BV1M5411M7Eo

  • P1现代Fortran编程之系统篇:windows(字幕版)_bilibili

    10:31

  • P2现代Fortran编程之编译器篇:gfortran(字幕版)_bilibili

    17:44

  • P3现代Fortran编程之编辑器篇:vs code/notepad++

    24:07

  • P4现代Fortran编程之Fortran语言篇:modern_fortran18

    30:58

  • P5现代Fortran编程之编译工具篇:fpm&make

    29:40

  • P6现代Fortran编程之shell篇:bash

    24:02

  • P7现代Fortran编程之速度篇:心有猛虎,细嗅蔷薇

    46:55

  • P8现代Fortran编程之新手错误篇:柳暗花明

    13:29

  • P9现代Fortran编程之语法篇:program

    13:43

  • P10现代Fortran编程之语法篇:subroutine&function

    12:14

  • P11现代Fortran编程之语法篇:interface

    08:13

  • P12现代Fortran编程之语法篇:module&submodule

    06:18

  • P13现代Fortran编程之语法篇:type面向对象

    06:46

  • P14现代Fortran编程之语法篇:interface2c

    06:29

  • P15现代Fortran编程之开源篇:git贡献开源指南

    27:33

  • P16现代Fortran编程之编程范式:结构化、函数式、面向对象式编程

    19:53

P1现代Fortran编程之系统篇:windows-系统调度

img

img

  • path 环境路径
  • 键值对
  • OS,是windows系统

img

  • 之前用ivf,太臃肿了,推荐轻量化的,gfortran

img

img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P2现代Fortran编程之编译器篇:gfortran-编译

gnu

img

  • gfortran,开源,免费,轻量化

gnu

  • 收费–>服务收费,代做
  • gnu 下开发的…

gcc

img

  • g77

msys2安装gfortran(成功)

打开 MSYS2

img

  • msys2包管理器
  • pacman -Ss fortran 搜索包
  • 一般

img

  • pacman -S mingw64/mingw-w64-x86_64-gcc-fortran

其它编译器

img

img

gfortran基础操作

img

gcc

  • gcc/gfortran -c *.f90 可以操作
  • gcc -o main *.o/*.f90 不可这么操作
  • gfortran -o main *.o/*.f90 可以操作

性能评测

img

time ./main

img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P3现代Fortran编程之编辑器篇:vs code/notepad++

对编辑器的要求

img

常见的编辑器

img

img

img

以下是IDE

img

img

需要设置链接库

img

VScode插件

img

  • Fortran 是静态语言,
  • Python 是动态语言,
  • fprettify –version
  • fprettify –

img

  • 语法没错,逻辑错了,需要debug
  • gdb –help
  • GDB Debugger - Beyond

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

最速通关Win10+VSCode+Msys2+Mingw64 C++ opencv开发环境配置

https://www.jianshu.com/p/4c94c96d8eee

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P4现代Fortran编程之Fortran语言篇:modern_fortran18

www.onlinegdb.com

img

ford

注释风格:

img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

P5现代Fortran编程之编译工具篇:fpm&make

img

img

  • 看相关博客(《跟我一起学makefile》)

img

  • 很新奇的想法~~

img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

想做C语言/C++开发?这些才是你该学的东西!

https://www.bilibili.com/video/BV1G7411K7j2?spm_id_from=333.337.search-card.all.click

语言

基础四大件

  • 数据结构与算法
  • 操作系统
  • 计算机网络(TCP/IP协议栈)
  • 设计模式

基础四大件比编程语言重要很多;

linux,shell,

编译器-gcc,make-makefile-整个的编译过程,调试-gdb,

  • 官方文档
  • 《debugging with gdb》,《跟我一起写makefile》

linux环境变成

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

SSSSSSSSSSSSSSSSSSSSS我实现了的操作

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:msys2

Software Distribution and Building Platform for Windows

https://www.msys2.org/

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

Getting Started

MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software.

It consists of a command line terminal called mintty, bash, version control systems like git and subversion, tools like tar and awk and even build systems like autotools, all based on a modified version of Cygwin. Despite some of these central parts being based on Cygwin, the main focus of MSYS2 is to provide a build environment for native Windows software and the Cygwin-using parts are kept at a minimum. MSYS2 provides up-to-date native builds for GCC, mingw-w64, CPython, CMake, Meson, OpenSSL, FFmpeg, Rust, Ruby, just to name a few.

To provide easy installation of packages and a way to keep them updated it features a package management system called Pacman, which should be familiar to Arch Linux users. It brings many powerful features such as dependency resolution and simple complete system upgrades, as well as straight-forward and reproducible package building. Our package repository contains more than 2500 pre-built packages ready to install.

For more details see ‘What is MSYS2?’ which also compares MSYS2 to other software distributions and development environments like Cygwin, WSL, Chocolatey, Scoop, … and ‘Who Is Using MSYS2?’ to see which projects are using MSYS2 and what for.

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

Installation(成功)

  1. Download the installer: msys2-x86_64-20220319.exe

  2. Run the installer. MSYS2 requires 64 bit Windows 7 or newer.

  3. Enter your desired Installation Folder (short ASCII-only path on a NTFS volume, no accents, no spaces, no symlinks, no subst or network drives, no FAT).

    img

  4. When done, tick Run MSYS2 now.

    img

  5. Update the package database and base packages. Unless your setup file is very recent, it will take two steps. First run pacman -Syu:

    none

    刘锦灿@LAPTOP-085N0595 MSYS ~
    $ pacman -Syu
    :: Synchronizing package databases...
     mingw32                                                                   1496.2 KiB  47.7 KiB/s 00:31 [############################################################] 100%
     mingw64                                                                   1503.8 KiB   113 KiB/s 00:13 [############################################################] 100%
     ucrt64                                                                    1619.0 KiB  66.0 KiB/s 00:25 [############################################################] 100%
     clang64                                                                   1543.2 KiB  43.0 KiB/s 00:36 [############################################################] 100%
     msys                                                                       380.0 KiB   162 KiB/s 00:02 [############################################################] 100%
    :: Starting core system upgrade...
    warning: terminate other MSYS2 programs before proceeding
    resolving dependencies...
    looking for conflicting packages...
    
    Packages (1) mintty-1~3.6.0-1
    
    Total Download Size:   0.78 MiB
    Total Installed Size:  2.23 MiB
    Net Upgrade Size:      0.01 MiB
    
    :: Proceed with installation? [Y/n] Y
    :: Retrieving packages...
     mintty-1~3.6.0-1-x86_64                                                    795.4 KiB   714 KiB/s 00:01 [############################################################] 100%
    (1/1) checking keys in keyring                                                                          [############################################################] 100%
    (1/1) checking package integrity                                                                        [############################################################] 100%
    (1/1) loading package files                                                                             [############################################################] 100%
    (1/1) checking for file conflicts                                                                       [############################################################] 100%
    (1/1) checking available disk space                                                                     [############################################################] 100%
    :: Processing package changes...
    (1/1) upgrading mintty                                                                                  [############################################################] 100%
    :: To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n] Y
  6. Run “MSYS2 MSYS” from Start menu. Update the rest of the base packages with pacman -Su:

    none

    ...
  7. Now MSYS2 is ready for you. You will probably want to install some tools and the mingw-w64 GCC to start compiling:

    none

    $ pacman -S --needed base-devel mingw-w64-x86_64-toolchain
    warning: file-5.39-2 is up to date -- skipping
    [... more warnings ...]
    :: There are 48 members in group base-devel:
    :: Repository msys
       1) asciidoc  2) autoconf  3) autoconf2.13  4) autogen
       [... more packages listed ...]
    
    Enter a selection (default=all):
    :: There are 19 members in group mingw-w64-x86_64-toolchain:
    :: Repository mingw64
       1) mingw-w64-x86_64-binutils  2) mingw-w64-x86_64-crt-git
       [... more packages listed ...]
    
    Enter a selection (default=all):
    resolving dependencies...
    looking for conflicting packages...
    
    Packages (123) docbook-xml-4.5-2  docbook-xsl-1.79.2-1
                   [... more packages listed ...]
                   m4-1.4.18-2  make-4.3-1  man-db-2.9.3-1
                   mingw-w64-x86_64-binutils-2.35.1-3
                   mingw-w64-x86_64-crt-git-9.0.0.6090.ad98746a-1
                   mingw-w64-x86_64-gcc-10.2.0-6
                   mingw-w64-x86_64-gcc-ada-10.2.0-6
                   mingw-w64-x86_64-gcc-fortran-10.2.0-6
                   mingw-w64-x86_64-gcc-libgfortran-10.2.0-6
                   mingw-w64-x86_64-gcc-libs-10.2.0-6
                   mingw-w64-x86_64-gcc-objc-10.2.0-6
                   mingw-w64-x86_64-gdb-10.1-2
                   mingw-w64-x86_64-gdb-multiarch-10.1-2
                  [... more packages listed ...]
    
    Total Download Size:    196.15 MiB
    Total Installed Size:  1254.96 MiB
    
    :: Proceed with installation? [Y/n]
    [... downloading and installation continues ...]

    img

  8. To start building using the mingw-w64 GCC, close this window and run MSYS MinGW 64-bit from Start menu. Now you can call make or gcc to build software for Windows.

    只能在 MSYS2 MinGW x64中使用 gcc,无法在 MSYS2 MSYS中使用;

    img

  9. Check out the introduction page to learn which Start menu item to use when and which packages to install. Take look at Detailed MSYS2 install guide for troubleshooting and additional details on how to keep your MSYS2 up-to-date.

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

msys2中复制文本(不用管了,VScode更方便)

shift+左键选取内容

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

msys2安装gfortran(成功)

Installation结束后,其实已经在 MingGW x64中安装了gfortran,即 mingw64/mingw-w64-x86_64-gcc-fortran

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

msys2安装gcc(成功)

Installation结束后,其实已经在 MingGW x64中安装了gcc,即 mingw64/mingw-w64-x86_64-gcc

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

msys2安装的编译器可被cmd调用(成功)

将 ${MsysPath}/mingw64/bin目录添加进环境变量path,确定cmd窗口可以使用 gcc -v

img

能被cmd调用,说明也可以被 git bash调用

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:VScode

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 官方文档

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 打开新建的fortran文件夹(之前VScode仅安装过一些C/C++插件)

img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 添加 git bash 终端

https://juejin.cn/post/6967946262490398728

  1. 明确git中bash.exe位置

    img

  2. 打开命令面板,打开设置(json)

    img

    img

  3. 配置 terminal.integrated.profiles.windows

    img

    none

    "terminal.integrated.profiles.windows": {
    
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell"
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
        "GitBash": {
            "path": "D:\\Program Files\\Git\\bin\\bash.exe",
            "args": []
        }
    }
  4. 配置 terminal.integrated.defaultProfile.windows

    none

    "terminal.integrated.defaultProfile.windows": "GitBash"
  5. 重启VScode,终端-新建终端,选择 GitBash

    img

    成功~

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 运行简单Fortran语言例子1

main.f90

fortran

program main
    implicit none 
    print *, 'hello world.'
end program
  • 方法一

    刘锦灿@LAPTOP-085N0595 MINGW64 /d/zetero/VScode/Fortran/test1
    $ gfortran -c main.f90

    刘锦灿@LAPTOP-085N0595 MINGW64 /d/zetero/VScode/Fortran/test1
    $ gfortran main.o

    刘锦灿@LAPTOP-085N0595 MINGW64 /d/zetero/VScode/Fortran/test1
    $ ./a
    hello world.

  • 方法二

    刘锦灿@LAPTOP-085N0595 MINGW64 /d/zetero/VScode/Fortran/test1
    $ gfortran -c main.f90 && gfortran -o main main.o && ./main
    hello world.

    img

  • 方法三

    刘锦灿@LAPTOP-085N0595 /d/zetero/VScode/Fortran/test1
    $ gfortran -g -o main main.f90 && ./main
    hello world.

    没有 main.o文件

    img

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 扩展 modern fortran 安装

安装:

img

modern fortran 扩展的介绍网页:https://marketplace.visualstudio.com/items?itemName=krvajalm.linter-gfortran

功能:

  • 高亮

    img

  • 自动提示

    img

  • program骨架生成

    img

  • module骨架生成

    模块片段

    模块片段

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 添加 Msys bash 终端(建议)

  1. 明确msys bash终端位置,在 D:\msys64\usr\bin\bash.exe中;

  2. 打开命令面板,打开设置(json)

    img

    img

  3. 配置 terminal.integrated.profiles.windows

    none

    "MsysBash": {
        "path": "D:\\msys64\\usr\\bin\\bash.exe",
        "args": []
    }
  4. 配置 terminal.integrated.defaultProfile.windows

    none

    "terminal.integrated.defaultProfile.windows": "MsysBash",
  5. 重启VScode,终端-新建终端,选择 MsysBash

    成功~

  • 建议使用msys-bash的原因:
    • 将路径 $msys64/usr/bin/添加到系统环境变量并设为最高优先级(移到最上面),
    • 在VScode使用msys-bash能调用 pacman命令,可类似用 MSYS2 MSYS安装软件(例如python、fprettify、gdb),安装后的软件命令也可以在msys-bash使用,
    • 用git-bash不知道为什么无法使用 pacman命令、也无法使用安装后的软件的命令。

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 使用 fprettify 命令(msys2 msys安装,半成功)

https://blog.csdn.net/qq_36624899/article/details/115838247

https://pypi.org/project/fprettify/

  1. 使用 MSYS2 MSYS安装python,pip,fprettify;

    none

    刘锦灿@LAPTOP-085N0595 MSYS ~
    $ pacman -S python3-pip
    resolving dependencies...
    looking for conflicting packages...
    
    Packages (4) mpdecimal-2.5.0-1  python-3.9.9-2  python-setuptools-52.0.0-1  python-pip-21.1.1-1
    
    Total Download Size:    18.66 MiB
    Total Installed Size:  126.17 MiB
    
    :: Proceed with installation? [Y/n] Y
    :: Retrieving packages...
     python-setuptools-52.0.0-1-any                                             698.0 KiB   340 KiB/s 00:02 [############################################################] 100%
     mpdecimal-2.5.0-1-x86_64                                                   104.8 KiB  47.7 KiB/s 00:02 [############################################################] 100%
     python-3.9.9-2-x86_64                                                       16.1 MiB  3.22 MiB/s 00:05 [############################################################] 100%
     python-pip-21.1.1-1-any                                                   1797.0 KiB   313 KiB/s 00:06 [############################################################] 100%
     Total (4/4)                                                                 18.7 MiB  3.07 MiB/s 00:06 [############################################################] 100%
    (4/4) checking keys in keyring                                                                          [############################################################] 100%
    (4/4) checking package integrity                                                                        [############################################################] 100%
    (4/4) loading package files                                                                             [############################################################] 100%
    (4/4) checking for file conflicts                                                                       [############################################################] 100%
    (4/4) checking available disk space                                                                     [############################################################] 100%
    :: Processing package changes...
    (1/4) installing mpdecimal                                                                              [############################################################] 100%
    (2/4) installing python                                                                                 [############################################################] 100%
    (3/4) installing python-setuptools                                                                      [############################################################] 100%
    (4/4) installing python-pip                                                                             [############################################################] 100%
    
    刘锦灿@LAPTOP-085N0595 MSYS ~
    $ pip3 install --upgrade pip
    Requirement already satisfied: pip in /usr/lib/python3.9/site-packages (21.1.1)
    Collecting pip
      Downloading pip-22.0.4-py3-none-any.whl (2.1 MB)
         |████████████████████████████████| 2.1 MB 1.0 MB/s
    Installing collected packages: pip
      Attempting uninstall: pip
        Found existing installation: pip 21.1.1
        Uninstalling pip-21.1.1:
          Successfully uninstalled pip-21.1.1
    Successfully installed pip-22.0.4
    
    刘锦灿@LAPTOP-085N0595 MSYS ~
    $ pip install fprettify
    Collecting fprettify
      Downloading fprettify-0.3.7-py3-none-any.whl (28 kB)
    Collecting configargparse
      Downloading ConfigArgParse-1.5.3-py3-none-any.whl (20 kB)
    Installing collected packages: configargparse, fprettify
    Successfully installed configargparse-1.5.3 fprettify-0.3.7
    
    刘锦灿@LAPTOP-085N0595 MSYS ~
    $ fprettify --version
    /usr/bin/fprettify 0.3.7
  2. $usr\bin环境变量置顶,放到最先的优先级,目的是为了优先锁定msys中的python,从而可锁定fprettify;

    这样,能实现VScode中的 msys-bash调用 fprettify --version命令:

    img

  3. 可能需要在VScode扩展中下载fprettify;

  4. 可能需要在 settings.json配置

    none

    // fortran 格式化设置
    "fprettify.arguments": "-i 4 --case 1 1 1 2",
    "[FortranFreeForm]": {
        "editor.defaultFormatter": "Blamsoft.fprettify"
    }
  5. 验证的例子 main2.f90

    program demo
    integer :: endif, if, elseif
    integer, DIMENSION(2) :: function
    endif = 3; if = 2
    if (endif == 2) then
    endif = 5
    elseif = if + 4*(endif + &
    2**10)
    elseif (endif == 3) then
    function(if) = endif/elseif
    print *, endif
    end if
    end program

    通过msys-bash,fprettify main2.f90,实现格式化,

    program demo
       integer :: endif, if, elseif
       integer, DIMENSION(2) :: function
       endif = 3; if = 2
       if (endif == 2) then
          endif = 5
          elseif = if + 4*(endif + &
                           2**10)
       elseif (endif == 3) then
          function(if) = endif/elseif
          print *, endif
       end if
    end program

    成功

    fprettify -i 4 ./test1/main2.f90

    -r可以对项目的所有文档进行格式化;

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:请问VScode,基于python安装了一个fortran格式化的扩展fprettify,怎么格式化没效果呀,而且在终端也显示没有该命令~~

右键,点击格式化没用,

需要通过msys-bash,fprettify main2.f90

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 扩展 gdb debugger 安装,对fortran进行debug (成功)

没有语法错误,可能有逻辑错误,需要debug.

https://www.bilibili.com/video/BV1M5411M7Eo?p=3&spm_id_from=pageDriver

GDB Debugger - Beyond市场介绍:https://marketplace.visualstudio.com/items?itemName=coolchyni.beyond-debug

Debug a C++ project in VS Code: https://www.youtube.com/watch?v=G9gnSGKYIg4

GDB调试指南(入门,看这篇够了):https://blog.csdn.net/chen1415886044/article/details/105094688

  1. 在VScode调用msys-bash,在系统(msys包)中安装gdb;

    img

  2. 在VScode扩展,安装 GDB Debugger - Beyond;

    img

  3. 切换到调试视图,第一次时需要创建 launch.json文件,选择GDB(Beyond),

    img

    img

    launch.json位于 .vscode中,

    img

  4. launch.json对应位置添加 main.exe的调试配置,

    img

    必须 -g生成 main.exe文件,

    img

    进行调试,

    img

SSSSSSSSSSSSSSSSSSSSSSSSSSSS

.f90的跨文件调试(launch.json)(成功)

【问题来源】

【新进】400mm(137391659) 2022/4/10 20:37:59
@ubuntu+VScode+Gfortran 我有一个问题请教,fortran77 程序文件,调用(CALL)另外一个fortran77文件中的子程序(SUBROUTINE),在VScode中,无法调试运行,错误提示为:子程序没有定义。如何解决?

【新进】400mm(137391659) 2022/4/10 20:39:09
就是要,多个文件联合在一起,调试才行,可是我不知道在vscode怎么设置

【新进】400mm(137391659) 2022/4/10 20:40:02
单个文件的可以正常调试

【管理员】code::blocks(1943133009) 2022/4/10 20:52:59
{fileDirname}\\*.for 或者你的相关文件如果都在这一个文件夹里面 写成这样也行

【新进】400mm(137391659) 2022/4/10 21:23:54
@code::blocks 方法可以实现多个for文件编译调试,大佬,还想请教一个问题,还有一个*.C文件要一起编译调试,就是for文件和C文件一起编译调试,如何设置?

【管理员】code::blocks(1943133009) 2022/4/10 21:25:22
把c文件加上就行

【管理员】code::blocks(1943133009) 2022/4/10 21:25:30
gfortran可以直接编译c文件

【接下来是对.f90的跨文件调试】

  • 项目为 test_multi_f90file,位于 Fortran文件夹中,

    launch_json位于 .vscode中,其内容如下,

    {
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "type": "by-gdb",
                "request": "launch",
                "name": "Launch(gdb)",
                "program": "${workspaceRoot}\\test_multi_f90file\\main.exe",
                "args": [
                    "${workspaceRoot}\\test_multi_f90file\\mod_parms.o"
                ],
                "cwd": "${workspaceRoot}"
            }
        ]
    }

    Makefile

    FC = gfortran
    FFLAGS = -g
    runOBJS =  mod_parms.o main.o 
    
    %.o:%.f90
    	$(FC) -c $(FFLAGS) $<
    
    # $(runOBJS) 中.o文件顺序反过来会错误,说明,越是底层的.o文件,越是在前面;
    # main.exe
    run:$(runOBJS)  
    	$(FC) $(FFLAGS) $(runOBJS) -o main 
    
    clean:
    	rm -f *.o *.exe *.mod

    main.f90

    subroutine abc
        implicit none
        print *, 'hello world.'
        print *, 'hello world.'
    end subroutine abc
    
    program main
        use mod_parms
        implicit none
        real :: tmp
        call abc
        call abcd
        tmp = 0.0
        print *, 'hello world.'
    end program

    mod_parms.f90

    module mod_parms
       implicit none
       integer, parameter :: NN = 121
    contains
       subroutine abcd
          implicit none
          print *, 'hello world.'
          print *, 'hello world.'
       end subroutine abcd
    
    end module mod_parms
  1. 进入 test_multi_f90file,在msys-bash输入命令 make cleanmake run
  2. 打断点,
  3. 运行和调试中,开始调试,

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 中fortran90用户代码片段

https://www.zhihu.com/question/350471140/answer/855566722

  1. 打开fortran90用户代码片段的json文件,FortranFreeForm.json

    img

    img

  2. 在json文件配置 subroutine

    none

    "Subrt": {
    	"prefix": "subr",
     	"body": [
     		"subroutine ${1:routine}(${2:args})",
    		"\timplicit none",
    		"\t${3:type} :: ${2:args}",
    		"\t${0}",
     		"end subroutine ${1:routine}"
     	],
     	"description": "Create a subroutine"
     }
    

    img

  3. main.f90验证是否成功,

    打出 su,选择 Subrt对应的那一项,

    img

    按下 Tab

    img

    可继续按Tab,对名称、参数进行修改;

    成功~

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 用户同步设置

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 字体设置

VS Code 修改字体为JetBrains Mono:https://www.cnblogs.com/billyme/p/13237526.html(**貌似可行**)

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 使用 fpm 命令编译工具(成功)

github fpm,https://github.com/fortran-lang/fpm

国外的fpm介绍:https://www.bilibili.com/video/BV145411w7Pr?p=26

方流返:https://www.bilibili.com/video/BV1M5411M7Eo?p=5

  1. 使用VScode中的msys-bash安装 fpm,即 pacman -S mingw-w64-x86_64-fpm

    刘锦灿@LAPTOP-085N0595  /d/zetero/VScode/Fortran
    $ pacman -S mingw-w64-x86_64-fpm
    正在解析依赖关系...
    正在查找软件包冲突...
    
    软件包 (1) mingw-w64-x86_64-fpm-0.5.0-1
    
    下载大小:      0.26 MiB
    全部安装大小:  0.77 MiB
    
    :: 进行安装吗? [Y/n] Y
    :: 正在获取软件包......
     mingw-w64-x86_64-fpm-0.5.0-1-any               268.2 KiB   190 KiB/s 00:01 [#########################################] 100%
    (1/1) 正在检查密钥环里的密钥                                                [#########################################] 100%
    (1/1) 正在检查软件包完整性                                                  [#########################################] 100%
    (1/1) 正在加载软件包文件                                                    [#########################################] 100%
    (1/1) 正在检查文件冲突                                                      [#########################################] 100%
    (1/1) 正在检查可用存储空间                                                  [#########################################] 100% 
    :: 正在处理软件包的变化...
    (1/1) 正在安装 mingw-w64-x86_64-fpm                                         [#########################################] 100%
    mingw-w64-x86_64-fpm 的可选依赖
        git: Support for fetching projects with git
    刘锦灿@LAPTOP-085N0595  /d/zetero/VScode/Fortran
    $ fpm --version
    Version:     0.5.0, alpha
    Program:     fpm(1)
    Description: A Fortran package manager and build system
    Home Page:   https://github.com/fortran-lang/fpm
    License:     MIT
    OS Type:     Windows
    
    刘锦灿@LAPTOP-085N0595  /d/zetero/VScode/Fortran
    $ which fpm
    /mingw64/bin/fpm
    
    刘锦灿@LAPTOP-085N0595  /d/zetero/VScode/Fortran
    $
    fpm --help
  2. 在VScode中的msys-bash中,cd到相关路径,fpm new

    刘锦灿@LAPTOP-085N0595  /d/zetero/VScode/Fortran
    $ fpm new test1_fpm
     + mkdir test1_fpm
     + cd test1_fpm
     + mkdir test1_fpm\src
     + mkdir test1_fpm\app
     + mkdir test1_fpm\test
     + git init test1_fpm
    Initialized empty Git repository in D:/zetero/VScode/Fortran/test1_fpm/.git/
    fpm: Leaving directory 'D:'
  3. fpm test失败,原因看 FAQ:寻找关于fortran的项目管理方法博客,ok

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 使用 make 命令运行makefile(成功,但不建议)

陈浩:https://seisman.github.io/how-to-write-makefile/introduction.html;

https://blog.csdn.net/myyanjie/article/details/105295359;

小马哥:https://www.douyin.com/video/7061152306401692967;

img

img

makefile 编译Linux C/C++项目快速入门:https://www.bilibili.com/video/BV1vg41177zT?spm_id_from=333.337.search-card.all.click

  1. 使用VScode中的msys-bash安装 make

    none

    刘锦灿@LAPTOP-085N0595  /d/zetero/VScode/Fortran/test1/test_proj
    $ make --version
    GNU Make 4.3
    为 x86_64-pc-msys 编译
    Copyright (C) 1988-2020 Free Software Foundation, Inc.
    许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
    本软件是自由软件:您可以自由修改和重新发布它。
    在法律允许的范围内没有其他保证。

    貌似在 install时已经安装了 make命令,

  2. 在项目中创建 Makefile文件,(参考 makefile-编译Linux_C和C++项目快速入门.md博客)

感觉写起来有些复杂,想加入 fpm 了;(成功)

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

SSSSSSSSSSSSSSSSSSSSSS(以下文件丢失过一次,我感觉好恶心,🤮)

VScode-git源代码管理

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

推送:git bash 把项目第一次推送到github仓库上

【1】github创建远程仓库,(以AddTimestamp为例)

没想到创建完远程仓库有指导怎么推送,真智能;

【2】VScode git-bash 按照上图进行操作,

【3】以后就用VScode进行操作即可,当然也可按照上图操作,
nice~

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

推送:VScode 修改本地仓库(以 fpm项目为例)

核心:”添-提-拉-推”方法

  1. “添”:

  2. “提”

  3. “拉”:

  4. “推”:

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

推送:VScode 修改本地仓库+修改远程github仓库+一个修改一次提交一个描述

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

推送:VScode 创建分支+转换分支+分支推送

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:fpm项目中为什么 build文件本地仓库有,而远程仓库没有?【重要,每次推送都要执行这个】

原因在于 .gitignore文件,

解决方法:

  • find . -name *.git | sed -n '2,$p' | xargs rm -f -R

    注意这里不能删除本项目的 .git文件夹,而其它子文件夹下的 .git需要删除;

  • find . -name *.gitignore | xargs rm -f

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:修改github的默认分支

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:修改远程仓库github分支的名称

  1. 将本地仓库的分支重命名,

    所有分支中,master_copy分支已重命名为 v0.1.0

  2. git bash 删除远程分支,(https://www.myfreax.com/how-to-rename-local-and-remote-git-branch/)

    git push origin --delete master_copy

  3. 上传新命名的本地分支,【git修改分支名称,106个赞】

git push origin v0.1.0

  1. 把修改后的本地分支与远程分支关联

    git branch --set-upstream-to origin/v0.1.0

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:把克隆的项目推送到自己的github仓库上

  1. github fork 项目
  2. 本地项目更换origin
  3. 本地项目创建分支,推送

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:能否一个一个提交修改,为每一个提交添加描述?(OK)

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

SSSSSSSSSSSSSSSSSSSSSS(上面为主要丢失的文件,已尝试修复)

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

FAQ:VScode fortran-language-server的选择?fpm使用VScode中language-fortran-server?

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

【FAQ的详细说明(Fortran Language Server for VSCode #596)】

Is there one already?

I would like the language server to provide all methods and variables (derived types, etc.) in a given module in the Outline section in the left. It should be fast (immediate). The C++ language server updates quite slowly, and I think Fortran can be made instantaneous because the language is simpler.

The language server should work with fpm to correctly and automatically resolve all project files and dependencies (!) and when use pres F12, it would find the definition in any file (whether project file or dependency) and open it. Thanks to fpm, this should just work and be 100% robust.

In terms of compiler support to get this working, what exactly is needed? If somebody has experience with the language server protocol, please get in touch.

This is a long term project, but I think it is important to get started, getting it working perhaps on single file projects and then go from there.

fortran-language-server】:

FORTRAN IntelliSense扩展】

【VS Code for Fortran Ep.2: Extensions & Rulershttps://www.youtube.com/watch?v=MZZLhodCzRY】

  • 4:41,modern fortran

    语法高亮,指出错误,
    
  • 5:37,Fortran IntelliSense,

    • 出现错误的知识,fortran-language-server

    • pip3 install fortran-language-server,

    • 自动填补,hover-on(注释),goto,

  • 6:36,> reload windows,重启VScode,

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

【FAQ:fortran语言服务器-help from 清风徐来+codeblock】

  • 1,

    【新进】Win10+VScode+Gfortran(3079779149) 18:01:57
    询问关于VScode安装语言服务器Fortran IntelliSence的问题:
    1、已经在VScode安装了Modern Fortran和Fortran IntelliSence的扩展;
    2、已经在msys2中安装了python和fortran-language-server;
    可是都安装后,就只有语法高亮的功能,...
    求助~~
    
    【少帅】清风徐来(1325686572) 2022/4/5 18:34:55
    还需要配置环境路径和必要的vscode插件设置
    

    自己又思考了一下:pip安装的fortran-language-server与VScode之间缺少联系!!!;

  • 2,

    【新进】Win10+VScode+Gfortran(3079779149)  19:06:33
    请问有什么具体的细节吗,查了很久,感觉还是很模糊~
    • 3,

      【管理员】code::blocks(1943133009)  19:08:36
      fortls的位置
      
      【新进】Win10+VScode+Gfortran(3079779149) 2022/4/5 19:28:15
      找不到fortls.exe,┭┮﹏┭┮
      
      【管理员】code::blocks(1943133009) 2022/4/5 19:32:43
      usr/bin下面
      
      【新进】Win10+VScode+Gfortran(3079779149) 2022/4/5 19:38:35
      只有fortls文件,(⊙_⊙;)

      【管理员】code::blocks(1943133009) 2022/4/5 19:55:09
      神奇
      
      【管理员】code::blocks(1943133009) 2022/4/5 19:55:20
      msys2里面居然是linux文件

      思考原因:可能是因为我在 msys2 msys中安装的 fortran-language-service(即 fortls),接下来的 清风徐来给出了一个方法,用conda安装;

    • 4,

      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:17:36
      你安装是什么版本的modern fortran @Win10+VScode+Gfortran 
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:18:23
      用windows,还是vs好用哦
      
      【新进】Win10+VScode+Gfortran(3079779149) 2022/4/5 19:18:34
      清风徐来-Fortran  
      你安装是什么版本的modern fortran @Win10+VScode+Gfortran 
      @清风徐来-Fortran  v2.6.2的版本...
      
      【新进】Win10+VScode+Gfortran(3079779149) 2022/4/5 19:19:22
      想着在windows学了VScode,linux系统基本也一样...
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:20:47
      你可以安装预览版本的modern fortran 
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:21:16
      那个好用些
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:22:04
      跳转功能你应该已经有了
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:22:22
      你想要什么插件功能?
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:22:46
      fortran 插件没那么完美
      
      【新进】Win10+VScode+Gfortran(3079779149) 2022/4/5 19:22:54
      函数跳转、悬挂信息~~
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:24:08
      这个在2.6版本应该属于intellisense的功能
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:24:28
      只要fortls装对了,按理说没问题
      
      【少帅】清风徐来-Fortran<zuo.zhihua@qq.com> 2022/4/5 19:24:40
      你查一下fortls —version

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

【FAQ:fortran语言服务器-help from 清风徐来】(解决)

清风徐来  19:27:02
我是清风徐来,10分钟后远程看看?

MyLifeStyle  19:27:42
可以可以,十分感谢大佬~~

清风徐来  19:28:22
vscode非常不适合新手,祝你好运,待会给你远程

清风徐来  19:28:29
你有向日葵吗?

MyLifeStyle  19:29:34
有的有的,学习vscode主要是出于兴趣,感觉很强大~~

MyLifeStyle  19:31:11
可能这就是越菜越爱玩吧

清风徐来-Fortran  19:40:36
你把你的向日葵账号截图发过来吧

MyLifeStyle  19:42:21
596795618

MyLifeStyle  19:42:31
84n01y
  1. Modern Fortran扩展变为预发布版本,

    Fortran configuration的设置,

    清风徐来-Fortran  19:58:33
    默认开启了gfortran linter,它会生成很多.mod文件
    
    清风徐来-Fortran  19:59:00
    你可以使用这个选项控制输出.mod文件到特定路径

    ${workspaceFolder}/build/dependencies/,貌似与 fpm联系在了一起;

  2. SSS,

    清风徐来-Fortran  19:59:26
    我给你安装的modern fortran预览版本,这个更开箱即用。
    
    清风徐来-Fortran  19:59:56
    你看看有问题没有
    
    清风徐来-Fortran  20:00:15
    好像我默认使用的pip是conda的python的pip
    
    清风徐来-Fortran  20:00:23
    不是msys2的pip
    
    清风徐来-Fortran  20:00:39
    不过差别不大,能用就行
    
    MyLifeStyle  20:00:49
    太强了

    msys-bash操作,

    fortls.exe

    清风徐来-Fortran 20:01:14
    另外给你安装了一个**everything**,用来查找全局文件的
    
    MyLifeStyle 20:01:44
    好勒,十分感谢大佬!,之前也想弄这个,这次都知道了

  3. SSS,

    清风徐来-Fortran  20:01:52
    vs code的好处是可以联网存储设置,以后换笔记本比较方便。
    
    清风徐来-Fortran  20:02:30
    我已经好久没配置过fortran了,不是很熟练了
    
    MyLifeStyle  20:03:12
    最近一直在配置文件,fortran代码都还没具体看
    
    MyLifeStyle  20:03:43
    十分感谢呀
    
    清风徐来-Fortran  20:04:01
    我主要在windows上使用、开发fortran,vs code难度不适合新手。
    
    清风徐来-Fortran  20:04:15
    你使用什么make工具构建代码?
    
    MyLifeStyle  20:04:35
    最近刚学make,也学了fpm
    
    MyLifeStyle  20:04:45
    cmake就没看了
    
    清风徐来-Fortran  20:05:08
    用fpm,有点赶潮流啊
    
    清风徐来-Fortran  20:05:41
    fpm还是不适合正经项目
    
    清风徐来-Fortran  20:06:06
    cmake比较难,make不是非常适合跨平台、跨编译器。
    
    清风徐来-Fortran  20:06:19
    Fortran环境、生态一地鸡毛
    
    MyLifeStyle  20:06:39
    我也觉得很难
    
    清风徐来-Fortran  20:06:48
    你怎么了解到fpm的,为什么突然开始做fortran代码?
    
    清风徐来-Fortran  20:07:01
    我看你对python也有涉猎啊
    
    MyLifeStyle  20:07:42
    做项目接触到的,很多代码都是fortran
    
    清风徐来-Fortran  20:07:54
    你是研究生吗?
    
    MyLifeStyle  20:08:02
    最近任务都还没做,一直在弄环境
    
    MyLifeStyle  20:08:20
    嗯嗯,还很弱鸡
    
    清风徐来-Fortran  20:08:30
    可能你们实验室的技术栈就有fortran,我们实验室也是fortran为主。
    
    清风徐来-Fortran  20:08:43
    但还是vs适合新手更多
    
    MyLifeStyle  20:09:47
    VS很久没用了,实验室电脑是Linux的,我电脑是windows的,没办法
  4. SSS,

    清风徐来-Fortran  20:09:49
    fortran-lang有望在其命名空间下维护vs code的Fortran插件。
    
    清风徐来-Fortran  20:10:12
    我们这都是windows用fortran,计算量不大
    
    清风徐来-Fortran  20:10:21
    你们可能计算量更大
    
    MyLifeStyle  20:11:09
    对,需要跑模式,计算量很大,可能还要去学并行相关的知识,好难
    
    MyLifeStyle  20:12:07
    再次感谢啦

    大佬原来还是他~~

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

【目前语言服务器实现了的功能】

  • 语法高亮
  • 自动补充
  • 函数跳转,函数信息悬挂查看,自动补充自定义的函数、例程名称
  • 大纲(仅包含函数、例程),变量没有

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

【FAQ:fpm使用VScode中fortran-language-server(fortls)?】

问题,如何实现app文件夹中program的函数mod,F12,跳转到src中的mod?
  • fortran 调用另一个文件夹下的module,

    如何使得 fortran 能调用另一个文件夹下的module,看看相关的B站视频,找找灵感,

  • fortran模块接口,https://zditect.com/article/30203679.html

解决方法

没做什么,好像就可以 F12跳转了,真神奇呀~~,希望别出错,五五

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 编写并实时预览Markdown

https://blog.csdn.net/supergao222/article/details/78596704

  • Ctrl + Shift + V 打开新窗口,加载md文件预览

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode 工作区

  • 添加文件夹到工作区
  • 复制工作区
  • 工作区另存为

SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS

VScode tasks.json(help from Vscode新人)

VSCode 配置文件的变量索引:https://zhuanlan.zhihu.com/p/44967536,


Author: Jincan
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Jincan !
  TOC