<center>
Win10+VScode+Msys2+Mingw64+GFortran+Git</center>
必要信息
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Fortran语言20分钟入个门,面向科学计算的、成熟的编译型语言,windows
https://www.bilibili.com/video/BV1D3411x7aj?spm_id_from=333.337.search-card.all.click
完整流程
win10 bash
下载编译器
- 下载个VS不香嘛
下载编辑器
设置路径
math.f90
- 包含函数
main.f90
单个文件编译
fortran
gfortran -c math.f90 !> -c 表示只编译不链接,生成.o文件,二进制文件 gfortran -c main.f90 gfortran math.o main.o !> 顺序很重要,会生成一个可执行文件 ./a !> 运行可执行文件
fortran
gfortran math.f90 main.f90 #编译并连接?,生成一个可执行文件 ./a
部署问题
linux下 idd ./a
查找运行依赖
使用 -static
静态连接,额外的东西尽量打包到可执行文件,利于部署到其它电脑
- 这里显示的依赖都是windows电脑都有的;
-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-系统调度
- path 环境路径
- 键值对
- OS,是windows系统
- 之前用ivf,太臃肿了,推荐轻量化的,gfortran
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
P2现代Fortran编程之编译器篇:gfortran-编译
gnu
- gfortran,开源,免费,轻量化
gnu
- 收费–>服务收费,代做
- gnu 下开发的…
gcc
- g77
msys2安装gfortran(成功)
打开 MSYS2
- msys2包管理器
pacman -Ss fortran
搜索包- 一般
pacman -S mingw64/mingw-w64-x86_64-gcc-fortran
其它编译器
gfortran基础操作
gcc
gcc/gfortran -c *.f90
可以操作gcc -o main *.o/*.f90
不可这么操作gfortran -o main *.o/*.f90
可以操作
性能评测
time ./main
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
P3现代Fortran编程之编辑器篇:vs code/notepad++
对编辑器的要求
常见的编辑器
以下是IDE
需要设置链接库
VScode插件
- Fortran 是静态语言,
- Python 是动态语言,
- fprettify –version
- fprettify –
- 语法没错,逻辑错了,需要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
ford
注释风格:
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
P5现代Fortran编程之编译工具篇:fpm&make
文件夹结构
fpm 中的调试问题,能加上
-g
???fpm和gfb一起,Provide debugging support for gdb,https://github.com/fortran-lang/fpm/issues/651
- 看相关博客(《跟我一起学makefile》)
- …
- 很新奇的想法~~
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
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(成功)
Download the installer: msys2-x86_64-20220319.exe
Run the installer. MSYS2 requires 64 bit Windows 7 or newer.
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).
When done, tick Run MSYS2 now.
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
Run “MSYS2 MSYS” from Start menu. Update the rest of the base packages with
pacman -Su
:none
...
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 ...]
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
orgcc
to build software for Windows.只能在
MSYS2 MinGW x64
中使用gcc
,无法在MSYS2 MSYS
中使用;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
能被cmd调用,说明也可以被
git bash
调用
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
FAQ:VScode
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 官方文档
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 打开新建的fortran文件夹(之前VScode仅安装过一些C/C++插件)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 添加 git bash 终端
明确git中bash.exe位置
打开命令面板,打开设置(json)
配置
terminal.integrated.profiles.windows
: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": [] } }
配置
terminal.integrated.defaultProfile.windows
:none
"terminal.integrated.defaultProfile.windows": "GitBash"
重启VScode,终端-新建终端,选择
GitBash
:成功~
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.方法三
刘锦灿@LAPTOP-085N0595 /d/zetero/VScode/Fortran/test1
$ gfortran -g -o main main.f90 && ./main
hello world.没有
main.o
文件
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 扩展 modern fortran 安装
安装:
modern fortran 扩展的介绍网页:https://marketplace.visualstudio.com/items?itemName=krvajalm.linter-gfortran
功能:
高亮
自动提示
program骨架生成
module骨架生成
模块片段
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 添加 Msys bash 终端(建议)
明确msys bash终端位置,在
D:\msys64\usr\bin\bash.exe
中;打开命令面板,打开设置(json)
配置
terminal.integrated.profiles.windows
:none
"MsysBash": { "path": "D:\\msys64\\usr\\bin\\bash.exe", "args": [] }
配置
terminal.integrated.defaultProfile.windows
:none
"terminal.integrated.defaultProfile.windows": "MsysBash",
重启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安装,半成功)
使用
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
将
$usr\bin
环境变量置顶,放到最先的优先级,目的是为了优先锁定msys中的python,从而可锁定fprettify;这样,能实现VScode中的
msys-bash
调用fprettify --version
命令:可能需要在VScode扩展中下载fprettify;
可能需要在
settings.json
配置none
// fortran 格式化设置 "fprettify.arguments": "-i 4 --case 1 1 1 2", "[FortranFreeForm]": { "editor.defaultFormatter": "Blamsoft.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
通过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
在VScode调用msys-bash,在系统(msys包)中安装gdb;
在VScode扩展,安装
GDB Debugger - Beyond
;切换到调试视图,第一次时需要创建
launch.json
文件,选择GDB(Beyond),launch.json
位于.vscode
中,在
launch.json
对应位置添加main.exe
的调试配置,必须
-g
生成main.exe
文件,进行调试,
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
- 进入
test_multi_f90file
,在msys-bash输入命令make clean
,make run
, - 打断点,
- 在
运行和调试
中,开始调试,
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 中fortran90用户代码片段
打开fortran90用户代码片段的json文件,
FortranFreeForm.json
,在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" }
在
main.f90
验证是否成功,打出
su
,选择Subrt
对应的那一项,按下
Tab
,可继续按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
使用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
在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:'
fpm test
失败,原因看FAQ:寻找关于fortran的项目管理方法
博客,ok
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 使用 make 命令运行makefile(成功,但不建议)
陈浩:https://seisman.github.io/how-to-write-makefile/introduction.html;
makefile 编译Linux C/C++项目快速入门:https://www.bilibili.com/video/BV1vg41177zT?spm_id_from=333.337.search-card.all.click
使用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
命令,在项目中创建
Makefile
文件,(参考makefile-编译Linux_C和C++项目快速入门.md
博客)
感觉写起来有些复杂,想加入 fpm 了;(成功)
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSS(以下文件丢失过一次,我感觉好恶心,🤮)
VScode-git源代码管理
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
推送:git bash 把项目第一次推送到github仓库上
【1】github创建远程仓库,(以AddTimestamp为例)
没想到创建完远程仓库有指导怎么推送,真智能;
【2】VScode git-bash 按照上图进行操作,
git init
git commit -m “first commit”
git branch -M v0.1.0
v0.1.0可以换成main等
git remote add origin https://github.com/Liu-Jincan/AddTimestamp.git
git push -u origin v0.1.0
【3】以后就用VScode进行操作即可,当然也可按照上图操作,
nice~
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
推送:VScode 修改本地仓库(以 fpm
项目为例)
核心:”添-提-拉-推”方法
“添”:
“提”
“拉”:
“推”:
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分支的名称
将本地仓库的分支重命名,
所有分支中,
master_copy
分支已重命名为v0.1.0
,git bash 删除远程分支,(https://www.myfreax.com/how-to-rename-local-and-remote-git-branch/)
git push origin --delete master_copy
上传新命名的本地分支,【git修改分支名称,106个赞】
git push origin v0.1.0
把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/v0.1.0
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
FAQ:把克隆的项目推送到自己的github仓库上
- github fork 项目
- 本地项目更换origin
- 本地项目创建分支,推送
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
】:
a basic user of it and use only autocomplete and hover-on definitions. (Fortran Language Server for VSCode #596),
good code hints and definition jumps, provide all methods and variables (derived types, etc.) in a given module in the Outline section in the left.(Fortran Language Server for VSCode #596),
github官网:https://github.com/hansec/fortran-language-server
安装:
msys2 msys
中,pip install fortran-language-server
,;
【FORTRAN IntelliSense
扩展】
needed:
python
,fortran language server
,
市场:https://marketplace.visualstudio.com/items?itemName=hansec.fortran-ls
安装:
- …
【VS Code for Fortran Ep.2: Extensions & Rulers:https://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
Modern Fortran
扩展变为预发布版本,Fortran configuration
的设置,清风徐来-Fortran 19:58:33 默认开启了gfortran linter,它会生成很多.mod文件 清风徐来-Fortran 19:59:00 你可以使用这个选项控制输出.mod文件到特定路径
${workspaceFolder}/build/dependencies/
,貌似与fpm
联系在了一起;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 好勒,十分感谢大佬!,之前也想弄这个,这次都知道了
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的,没办法
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
Ctrl + Shift + V
打开新窗口,加载md文件预览
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode 工作区
- 添加文件夹到工作区
- 复制工作区
- 工作区另存为
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
VScode tasks.json(help from Vscode新人)
VSCode 配置文件的变量索引:https://zhuanlan.zhihu.com/p/44967536,