💲

Ubuntu + VSCodeでFortran開発環境を構築する(WSL2対応)

2021/10/17に公開

概要

Ubuntu(ピュアなUbuntuかWSL2)上でVSCodeでFortran開発できる環境を整えます。

検索してもWSLでできるようにした記事ばっかりヒットするので書いておきます。

結論から言うと、プラグインを入れて、.vscodeのlaunch.jsonとtasks.jsonを適切に設定してやることで、他の言語と同様にFortran開発ができるようになります。

必要なプラグイン

下記2つを入れます。

  1. krvajalm.linter-gfortran
  2. ekibun.fortranbreaker
  3. 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であれば参考サイトの通り設定が必要です。

参考

Discussion