Ubuntu + VSCodeでFortran開発環境を構築する(WSL2対応)
概要
Ubuntu(ピュアなUbuntuかWSL2)上でVSCodeでFortran開発できる環境を整えます。
検索してもWSLでできるようにした記事ばっかりヒットするので書いておきます。
結論から言うと、プラグインを入れて、.vscode
のlaunch.jsonとtasks.jsonを適切に設定してやることで、他の言語と同様にFortran開発ができるようになります。
必要なプラグイン
下記2つを入れます。
- krvajalm.linter-gfortran
- ekibun.fortranbreaker
- ms-vscode.cpptools
1はFortranのシンタックスハイライトやリンティングなどの基本的な機能を提供します。2はブレークポイントを設定するのに必要です。3はC/C++用のデバッグ機能などを提供するものですが、Fortranのデバッグ機能もこれをベースにしているので必須になります。
launch.jsonとtasks.jsonの記述
.vscode以下にlaunch.jsonとtasks.jsonを設定します。launch.jsonはF5キーを押したときの挙動を設定するもので、tasks.jsonはデバッグやテストなどのタスクを1つずつ記述するものになります。
これらは毎度自動生成されていて気にしなくてもよい言語もあります。PythonやNode.jsではlaunch.jsonを気にせずにデバッグ実行していた方もいるかも知れません。ところが、Fortranではきっちり設定してやる必要があります。
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",
"${workspaceFolder}/${fileBasenameNoExtension}",
"${fileBasename}"
],
"group": {
"kind": "build",
"isDefault": true,
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
}
]
}
args
で引数を設定するのですが、-g
タグをつけておかないとデバッグ関連の機能が働かない上エラーメッセージが出ます。
launch.json
続いてlaunch.jsonです。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 起動",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}",
"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"タグの値を書く
}
]
}
preLaunchTask
でF5を押したときにデバッグ実行する前にビルドタスクを走らせるように設定しておきます。
まとめ
上記を設定すると、ブレークポイントやステップ実行も使える状態でFortran開発ができるようになります。
QiitaではFortran勢がいたんですがZennにはあまりいないようですね。みなさんFortranerになりましょう!!
補足
WSL2でVSCodeのRemoteを使う場合であれば上記のjsonファイル設定で動作することを確認しました。WSL1であれば参考サイトの通り設定が必要です。
参考
- VSCodeでFortranのプログラムをコンパイル・デバッグするための設定
https://qiita.com/implicit_none/items/d49c9fdf51c307d22819
Discussion