概要
Quickstart Fortran on Windowsを使うと,
- gfortran
- Fortran Package Manager
- Git for Windows
- OpenBLAS (BLAS, LAPACK)
をまとめてインストールできます.また,付属のバッチファイルを使うことで,Fortran Standard Libraryをインストールできます.
環境
- Windows 11
- Quickstart Fortran on Windows v1.8
背景
Fortranには,多種のコンパイラが存在しています.その中でも,フリーのコンパイラとして,gfortranがよく利用されています.Linuxを利用している場合,OSが提供するパッケージマネージャを使えばgfortranを簡単にインストールできます.それ以外の方法は,ソースからビルドする以外は特に言及されません.一方で,Windowsの場合は,様々なインストール方法が存在します.
- Windows向けにビルドされたバイナリを使う方法.equation.com,TDM GCC,MinGW-w64等でインストーラが配布されています.
- Unix-Likeな環境をインストールして,その環境で提供されるパッケージマネージャを利用する方法.Cygwin, MSYS2, WSL等が存在します.
- Windows向けのパッケージマネージャを使う方法.選択肢は多くありませんが,例えばScoopがあります.
選択肢が多いことは(一般的には)良い事ですが,これからFortranを勉強するぞ!と考えている人に,この選択肢を突きつけて選択を迫るのは酷でしょう.Windowsユーザにとってなじみのあるインストーラを使う方法でインストールしようにも,上で例示しているだけでインストーラが3通りもあります.
また,近年Fortranの利便性を高めるOSSの開発が盛んになっており,そのインストール方法なども調べるとなるとかなり大変です.
この状況に対して,Laurence Kedward氏はWindowsへのFortranインストールを簡略化するQuickstart Fortran on Windowsを作成しました.Laurence Kedward氏はFortran-langコミュニティの中心人物であり,論文The State of Fortran1の筆頭著者でもあります.
Quickstart Fortran on Windows
インストーラのダウンロード
Quickstart Fortranのインストーラは,[githubリポジトリ](https://github.com/LKedward/quickstart-fortran)からダウンロードします.
右カラムのReleasesからReleaseページに移動し,LatestのAssetsからquickstart-fortran-installer.exe
をダウンロードします.現在の最新バージョンは,タグの記述によるとv1.8です.一部のブラウザでは,exeが検証されていない等の警告が出される場合があります.
インストール
ダウンロードしたインストーラをダブルクリックしてインストールします.このとき,WindowsによってPCが保護されましたというメッセージが表示され,インストーラの実行が妨げられる場合があります.作成者の身元は明らかですし,著者は1年以上使っていますが,危険にされされたことはありません.
インストールを続行する場合は,メッセージ下の詳細情報をクリックすると現れる実行ボタンを押します.
インストールを続行すると,インストールするコンポーネントの選択画面が出てきます.ここでは,インストール済みのGitのチェックを外し,gfortranとfpmのインストールをするようにしました.
[Next>]ボタンをクリックすると,インストールディレクトリの選択画面が出てきます.Quickstart Fortranは管理者権限を要求しないので,標準ではユーザディレクトリ以下の,AppData\Local\
にインストールされます.この標準のディレクトリ(%USERPROFILE%\AppData\Local\quickstart_fortran
)を,以降ではインストールディレクトリと呼びます.
[Install]ボタンをクリックするとインストールが開始されます.
インストールが完了したら,[close]ボタンをクリックしてインストーラを終了します.
設定次第では,環境変数が追加されたり,デスクトップにターミナルへのショートカットが作成されたりします.
試しに,デスクトップに作成されたショートカットQuickStart Fortran Command Line
を実行してみると,コマンドプロンプト(あるいはWindows Terminal)が起動します.
例えば
> gfortran --version
を実行してみると,コンパイラがインストールされていることを確認できます.
インストール時の設定でパスを通すようにしておけば,QuickStart Fortran Command Line以外の方法でコマンドプロンプトを開いても,gfortranを実行できるようになっているはずです.同様に,Fortran Package Manager (fpm)をインストールするようにしていれば,fpmも実行できるようになっています.
その他インストールされる便利機能
gfortranやfpm以外に,役に立つバッチファイルがインストールディレクトリ以下のutils
ディレクトリにインストールされます.
-
intel-setvars.bat
は,gfortranとは関係ありません.Intel Fortran (Intel oneAPI Base Toolkit + HPC Toolkit)をインストールしている際に,コマンドプロンプトからifortやifxを呼ぶための環境変数を設定します.Intel Fortranを使うときは,統合されたVisual StudioからGUI経由で呼び出すか,Intel Fortranをインストールした際に作られるショートカットIntel oneAPI command prompt for Intel 64 for Visual Studio 20xx
を実行して環境変数が設定されたコマンドプロンプトを立ち上げる必要がありました.複数のコンパイラを一つのコマンドプロンプトで利用する場合は結構面倒なことをしていたのですが,このバッチファイルが用意されたおかげで,Intel Fortranの呼出しが簡単になりました2. -
make.bat
は,インストールされるGNU Make 4.3のエイリアスを提供します.インストールされるGNU Makeのファイル名がmingw32-make.exe
となってしまっているため,コマンドプロンプトからmake
で呼び出すために用意されています.シンボリックリンクを張ればよいのですが,Windowsでシンボリックリンクを張るには管理者権限が必要であるため,管理者権限を要求しないQuickstart Fortran on Windowsではインストール時にシンボリックリンクを張ることはできません. -
setup-stdlib.bat
は,Fortran Standard Library (stdlib)のソースをgithubから取得し,ビルドした後ローカルにstdlibをインストールします.
fpmのアップデート
fpmの最新バージョンは0.7.0ですが,Quickstart Fortran on Windowsでインストールされるfpmのバージョンは,一つ前の0.6.0です.これを最新バージョンに置き換えるには,githubのReleaseページから最新版のバイナリfpm-0.7.0-windows-x86_64.exe
をダウンロードして名前をfpm.exe
に変更し,インストールディレクトリ配下のfpm
ディレクトリにあるfpm.exeを上書きするだけです.
stdlibのインストールと参照
setup-stdlib.bat
を利用した,stdlibのインストールと参照について説明をしておきます.
stdlibのインストールは,setup-stdlib.bat
を実行するだけです.実行すると,githubからソースが取得され,ビルドされたモジュールファイルとライブラリがコピーされます.モジュールファイルは,gfortranの標準のincludeディレクトリ(インストールディレクトリ以下\mingw64\lib\gcc\x86_64-w64-mingw32\バージョン\finclude
)にコピーされます.そのため,ビルドする際に,-I
等でインクルードディレクトリを指定する必要はありません.ライブラリは標準のlibディレクトリ(インストールディレクトリ以下\mingw64\lib
)にlibstdlib.a
という名前でコピーされます.リンクする際は,コンパイラに-lstdlib
を渡すことでリンクできます.
参照の例として,fpmのプロジェクトの設定を示します.
fpmプロジェクトを作成するには,fpm new
コマンドを用います.
> fpm new qsf --app
--app
オプションを指定すると,fpmで作成したプロジェクトディレクトリの下に,app
ディレクトリとメインルーチンとなるmain.f90
を作成します.
qsf
├─app
│ └─main.f90
├─fpm.toml
└─README.md
stdlibのバージョン番号を参照するコードを書いてビルドしてみると,stdlib_version
が参照できないというエラーが現れます.
program main
use :: stdlib_version
implicit none
character(:), allocatable :: version
call get_stdlib_version(string=version)
print *, version
end program main
qsf> fpm run
<ERROR>*cmd_run*:targets error:Unable to find source for module dependency: "stdlib_version" used by "app\main.f90"
STOP 1
このエラーを回避するには,プロジェクトルートにあるfpm.toml
の[build]
の項目に設定を追記します.
[build]
auto-executables = true
auto-tests = true
auto-examples = true
+
+ external-modules = ["stdlib_version"]
+ link = ["stdlib"]
この2行を追加することで,外部(Fortranコンパイラ付属のintrinsicなモジュールではない)モジュールstdlib_version
を参照すること,ライブラリlibstdlib.a
をリンクすることをコンパイラに指示します.fpmの設定については,fpm (Fortran Package Manager)の設定ファイルの解説で詳しく説明しています.
設定を追加して実行すると,stdlibのバージョンを参照できている(=外部モジュールを参照し,ライブラリをリンクできている)ことを確認できます.
qsf>fpm run
qsf.exe done.
[100%] Project compiled successfully.
0.2.1
まとめ
インストールするgfortranにこだわりがなければ,Quickstart Fortran on Windowsを検討してみてください.