FortranをVSCodeで書くための環境構築
環境
Windows11(64bit)を使用している前提で解説します.
インストールするもの
- Visual Studio Code(以下VSCode)
拡張機能として- Japanese Language Pack for Visual Studio Code
- C/C++
- Modern Fortran
- gfortran, gdb
- Python
- fortls
- fprettify
VSCode のインストール
Visual Studio Code の公式ページへアクセスしDownload for Windowsを押す.
ダウンロードされたVSCodeSetup-x64-x.xx.x.exeを実行する.
拡張機能をインストール
Ctrl+Shift+Xを押してMarketplaceで拡張機能を検索してインストールする.
もしくは
このアイコンをクリック.
Japanese Language Pack for Visual Studio Code
- VSCode の日本語化
C/C++
- デバッグ時に使用する.
Modern Fortran
- Fortranの言語機能全般
以上の3つをインストール
gfortran, gdb のインストール
MinGW のインストール
Minimalist GNU for Windowsへアクセスする.
mingw-get-setup.exeをダウンロードして実行し,MinGW installation managerを開く.
Basic Setupを選択し,mingw32-gcc-fortran-binの左にあるチェックボックスをクリックし,Mark for installationをクリック.
次にAll Packagesからmingw32-gdb-binを同様に選択し,
installationからApply Changesをクリックするとインストールが始まる.
システム環境変数の設定
Winキーを押し,システム環境変数の編集と入力してEnterを押す.
ダイアログの環境変数をクリックする.
システム環境変数の一覧からPathという項目をクリックする.
新規でC:\MinGW\binを追加し,OKを押してダイアログを閉じる.
Python のインストール
python公式サイトにアクセスし,DownloadsからWindowsを選択し,Stable Releasesの一番上にあるバージョンからDownload Windows installer (64bit)を選択する.ダウンロードが完了したら,インストーラを起動し,install nowをクリックする.
コマンドプロンプトもしくはpowershellを開き,
python -V
と入力しEnterを押す.
Python 3.x.x
と出力されればOK.
仮想環境の作成
各自,Fortranのファイルを置いているフォルダをVSCode上で開く.(ここではドキュメント内にFortranという名前のフォルダを作成して説明する.)
VSCode上でフォルダを開く.フォルダの開き方はCtrl+Shift+Oもしくは左上メニューのファイルからフォルダーを開くをクリックし,エクスプローラーから選択する.
Ctrl+Shift+@を押してターミナルを起動して,以下のコマンドを実行.
pip install virtualenv
virtualenvという仮想環境を作るためのライブラリがインストールされる.
.fortranという名前の仮想環境を作成する.(名前は.fortranである必要はなく,自由に決めてよい)
virtualenv .fortran
仮想環境を起動する.仮想環境内にインストールされたactivate.ps1を起動する.
./.fortran/Scripts/activate.ps1
powershellの表示が
(.fortran) PS C:\users\.....>
のようになっていればOK.
fortls, fprettifyのインストール
仮想環境を起動した状態で,以下のコマンドを実行する.
pip install fortls fprettify
仮想環境を終了するために以下のコマンドを実行する.
deactivate
jsonファイルの編集
現在のフォルダに .vscode という名前のフォルダを作成し,以下の名前のファイルを作成する.
- launch.json
- settings.json
- tasks.json
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 fortran",
"type": "shell",
"command": "gfortran",
"args": [
"-g",
"${fileBasename}",
"-o",
"${fileBasenameNoExtension}"
]
}
]
}
labelにはタスクの名前を設定する.ここではbuild fortran
としている.
typeではshell
を選択する.コンパイルをコマンドラインで実行するためのオプションである.
commandでは起動するコンパイラの名前を記述する.先ほどインストールしたgfortran
を設定する.
argsではコンパイラに渡す引数を指定する.
-
-g
: gdbを使ったデバッグオプションを有効にする. -
${fileBasename}
: 現在開いているファイルの名前. -
-o
: .exeファイルに名前を付けるためのオプション. -
${filBasenameNoExtention}
: 現在開いているファイルの拡張子を除いた名前.
この設定により,このタスクを走らせることでFortranのコンパイルとビルドが自動化できる.
launch.jsonを記述する.
{
"configurations": [
{
"name": "build and debug fortran file with gdb",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:/MinGW/bin/gdb.exe",
"preLaunchTask": "build fortran",
"setupCommands": [
{
"description": "gdb の再フォーマットを有効にする",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "逆アセンブリ フレーバーを Intel に設定",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
launch.jsonではデバッグの設定を行う.
requestでlaunch
(起動)を選択する.
programでは実行したいexeファイルへのパスを指定する.
cwdはワークスペースのフォルダを指定する.
externalConsoleではVSCode内部のターミナルを使用するか,コンソールを別に起動するかを選択できる.
MIModeはgdb
とする.
miDebuggerPathではgdb.exeへのパスを指定する.gfortranと同じフォルダにある.
preLaunchTaskではデバッグ実行前に実行するタスクの名前を指定する.先ほどtasks.jsonで記述したbuild fortran
を指定することでデバッグ前にコンパイルを行う.
それ以外はそこまで気にしなくても大丈夫.
settings.jsonを記述する
settings.jsonではgfortranやfortls, fprettifyなどの設定を記述する.
まずはgfortranから
"fortran.linter.compiler": "gfortran",
"fortran.linter.compilerPath": "C:/MinGW/bin/gfortran.exe"
使用するコンパイラの種類と,インストールされている場所を記述する.
次にfortls
"fortran.fortls.path": "C:/users/username/Documents/Fortran/.fortran/Scripts/fortls.exe",
こちらもインストールした場所を記述.
次にfprettify
"fortran.formatting.path": "C:/users/username/Documents/.fortran/Scripts/fprettify.exe",
"fortran.formatting.formatter": "fprettify",
"fortran.formatting.fprettifyArgs": ["--indent", "4", "--enable-decl", "--strip-comments", "--case", "1", "1", "1", "1"]
こちらもインストールされている場所を記述し,formatするときのスタイルを指定する.
最後にfortran全般に関わる設定をする.
"fortran.preferredCase": "lowercase",
"[FortranFreeForm]": {
"files.autoGuessEncoding": true,
"files.encoding": "shiftjis"
},
prefferedcaseで大文字・小文字の設定を行う.また文字コードをデフォルトで Shift-JIS にしておき,ファイルを開くときにエンコードが自動で推測されるようにする(VSCodeはデフォルトの文字コードがUTF-8のため).
最終的にはこのような感じになる(usernameのところは各自で変更すること).
{
"fortran.linter.compiler": "gfortran",
"fortran.linter.compilerPath": "C:/MinGW/bin/gfortran.exe",
"fortran.fortls.path": "C:/users/username/Documents/Fortran/.fortran/Scripts/fortls.exe",
"fortran.formatting.formatter": "fprettify",
"fortran.formatting.path": "C:/users/username/Documents/Fortran/.fortran/Scripts/fprettify.exe",
"fortran.formatting.fprettifyArgs": [
"--indent",
"4",
"--enable-decl",
"--strip-comments",
"--case",
"1",
"1",
"1",
"1"
],
"fortran.preferredCase": "lowercase",
"[FortranFreeForm]": {
"files.autoGuessEncoding": true,
"files.encoding": "shiftjis"
}
}
F5を押すとデバッグ開始.ファイルがコンパイルされ,exeが生成されたのちに実行される.
行番号の左側をクリックすると,ブレークポイント(赤丸)を設定できる.
ブレークポイントを設定すると,その行でデバッグを停止できる.F5でデバッグ再開.
左側のウィンドウに変数が表示される.次の一行を実行するにはF10を押す.
write
関数で表示した変数はデバッグコンソールに青字で表示される.
Discussion