Windows10のWSLでVscodeによるFortranの環境を作る方法を以下にメモしておきます。
2022年1月時点の最近の情報がまとまったサイトが見つからなかったので、参考になれば幸いです。
Windows10へのWSLの導入
まずは、Windows10のバージョンを最新版にして、以下のサイトを参考にWSLをインストールする。
このとき、Windowsコマンドプロンプトは管理者権限で立ち上げる必要あり。
Microsoftの公式サイト/WSL のインストール
VS Codeのインストール
以下のサイトを参考に、まずは、Windows上でVSCodeとRemote WSL拡張機能をインストールしたあと、Linuxディストリビューションを更新する。今回は、Ubuntuを使用。
Microsoftの公式サイト/Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する
それができたら、Ubuntuのコマンドラインで「code .」と入力し、VSCodeを立ち上げる。
$ code .
gfortranのインストール
この辺からあっているかどうかが不安。Ubuntu上で、以下のコマンドを実行し、gfortranをインストールする。
$ sudo apt install gfortran
VS Codeの基本設定
今回のVS Codeの基本設定を以下に示します。
Modern Fortranのインストール
VScodeの拡張機能から、Modern Fortran
をインストールする。下記の画像はインストール後の画面。インストール前は、右側の窓の中にインストールボタンがあるので、それをクリック。
VSCodeの拡張機能の設定
下記のサイトを参考に、フォートラン関係の拡張機能をインストールする。
Visual Studio Code の拡張機能と設定
多分、とりあえずは下記の機能だけで大丈夫だと思います。
$ code --install-extension krvajalm.linter-gfortran --force
gfortranのPathの設定
VSCode上でgfortranのPathを追加。Pathの設定がいつもよく分からないのだが、今回は、settings.jsonに下記の一文を追加。
{
"fortran.includePaths": ["/usr/local/include", "/usr/local"]
}
settings.jsonについては、下記のサイトを参考にした。
2021/4 Visual Studio Code のおすすめ設定 (settings.json)
【VSCode】settings.jsonについて理解する
テストファイルの実行
試しに、VSCodeで以下のファイルを作って実行。ファイル名は"test.f90"とした。
テストファイルのコードは、以下のサイトを参考にした。
はじめての Fortran プログラミング vscode 版
program test
boku = 2.5
kanojo = 0
love = boku * kanojo
print *, love
end program
画面右上の実行ボタン(さんかくボタン)を押すと、test.f90をコンパイルして、実行ファイルを作成し、そのファイルの実行まで行ってくれる。
0と表示されたので、とりあえず流れたっぽい。
実行ファイルの拡張子の設定
さて、プログラムはとりあえず動くようになったが、デフォルトだと、実行ファイルの拡張子がない状態である。そこで、settings.jsonの設定を行って、実行ファイルに、.outという拡張子が付くように設定する。Windowsの場合は、.exeがよいと思う。
今回は、「VSCodeのCode Runnerで実行のオプションをつける(実行ファイル名をa.out、a.exeに変更したい)」を参考に、以下のようにした。
settings.jsonに"code-runner.executorMap"を追加、fortranに関係する部分を変更している。
{
(中略)
"code-runner.executorMap": {
"javascript": "node",
(中略)
"less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
"FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt.out && $dir$fileNameWithoutExt.out",
"fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt.out && $dir$fileNameWithoutExt.out",
"fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt.out && $dir$fileNameWithoutExt.out",
"fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt.out && $dir$fileNameWithoutExt.out"
}
}
デバッグ機能などの追加
デバッグ機能を追加する方法を以下に示します。
結構はまりましたが、いろいろやっているうちに、なんとなく仕組みが分かってきたところ。
FORTRAN IntelliSense(fortran-language-server)のインストールと、tasks.jsonとlaunch.jsonの設定が必要です。
以下のサイトを参考にさせていただきました。
VSCodeでFortranのプログラムをコンパイル・デバッグするための設定
VSCode【fortranの設定】
tasks.jsonの使い方の基礎【VS Code使い方②】
【VSCode】launch.jsonについて理解する
Modern Fortranのサイト
FORTRAN IntelliSense(fortran-language-server)のインストール
ubuntu上で、pipを使って、FORTRAN IntelliSense(fortran-language-server)をインストールする。
pip install fortran-language-server
pipが入っていない場合は、pipを先にインストールする必要がある。
それから、VS CodeでfortlsのPathを設定する。VS Codeの左下の設定ボタンを押して設定画面を表示し、検索窓でfortlsと打って、下記の場所にPathを入力する。Pathの中身は適宜設定する。
tasks.jsonの設定
tasks.jsonを設定する。今回は、下記のように設定した。いろいろ触ったので、余分なものなども入っているかも。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "gfortran",
"args": [
"-g",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out",
"${fileDirname}/${fileBasename}"
],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": []
},
{
"type": "npm",
"script": "addExtensionPackDependencies",
"path": ".vscode-server/extensions/ms-python.python-2022.0.1786462952/",
"problemMatcher": [],
"label": "npm: addExtensionPackDependencies - .vscode-server/extensions/ms-python.python-2022.0.1786462952",
"detail": "gulp addExtensionPackDependencies",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
ポイントは、"args"の部分の設定かと。この場合は、ubuntu上で、以下のコマンドを実行したのと同じ。コンパイルするファイルと作成する実行ファイルは適宜設定する必要がある。
gfortran -g -o /home/yatakun/fortran/fileout/file.out /home/yatakun/fortran/fileout/file.f90
launch.jsonの設定
launch.jsonを設定する。launch.jsonを表示するには、[【VSCode】launch.jsonについて理解する]の解説が参考になる。
そのほか、下図の左端の[実行とデバッグ]の画面で、(gbd)fortranの横の設定ボタンを押すと、launch.jsonが表示される。
今回のlaunch.jsonの設定は下記のとおり。なお、事前にgdbをインストールする必要がある。インストールの方法はこちら。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 起動",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb", //確認して書き込む
"setupCommands": [
{
"description": "gdb の再フォーマットを有効にする",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build" // tasks.jsonの"label"タグの値を書く
}
]
}
デバッグのテスト
ここまでがうまく設定できると、デバッグが動くはず。
デバッグは、メニューの[実行]-[デバッグの開始]をクリックする。今回は、下記のコードで、ブレイクポイントを設定してみた。左のウィンドウに変数の値などが表示されている。
今回はここまで。
参考にしたサイト
全般を通して、下記のサイトなどを参考にさせていただきました。みなさまありがとうございます。
WSLでFortran (gfortran&Intel Parallel Studio)(Intel oneAPI Base Toolkit + HPC ToolkitでもOK)
はじめての Fortran プログラミング vscode 版
WSLを利用したLinux環境の構築
Ubuntu + VSCodeでFortran開発環境を構築する(WSL2対応)