3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows10のWSLでVSCodeによるFortran環境を作る

Last updated at Posted at 2022-01-29

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
をインストールする。下記の画像はインストール後の画面。インストール前は、右側の窓の中にインストールボタンがあるので、それをクリック。

image.png

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"]
}

下記の解説を参考にした。
image.png

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と表示されたので、とりあえず流れたっぽい。

image.png

実行ファイルの拡張子の設定

さて、プログラムはとりあえず動くようになったが、デフォルトだと、実行ファイルの拡張子がない状態である。そこで、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の中身は適宜設定する。

image.png

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が表示される。
image.png

今回の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"タグの値を書く
        }
    ]
  }

デバッグのテスト

ここまでがうまく設定できると、デバッグが動くはず。
デバッグは、メニューの[実行]-[デバッグの開始]をクリックする。今回は、下記のコードで、ブレイクポイントを設定してみた。左のウィンドウに変数の値などが表示されている。

image.png

今回はここまで。

参考にしたサイト

全般を通して、下記のサイトなどを参考にさせていただきました。みなさまありがとうございます。
WSLでFortran (gfortran&Intel Parallel Studio)(Intel oneAPI Base Toolkit + HPC ToolkitでもOK)
はじめての Fortran プログラミング vscode 版
WSLを利用したLinux環境の構築
Ubuntu + VSCodeでFortran開発環境を構築する(WSL2対応)

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?