Makefile に hoge.o とか fuga.mod とかの依存関係を手書きしたりするんだけど、数が増えてくるとめんどくさいし間違えやすいよね。
実は gfortran には依存関係を出力する機能がある(4.9.2で確認)。
オプション -M または -MM が依存関係を出力させるオプションだ。同時に -cpp も指定する必要がある。そのままだと標準出力に出力されるが -MF file を指定してファイルに出力させることもできる。
例えば hoge.f90 の依存関係を hoge.d に出力させるなら次のようにする。
$ gfortran -cpp -MM -MF hoge.d hoge.f90
ここで hoge.f90 が 内部で USE fuga としていたとすると hoge.d は次のようになる。
hoge.o: hoge.f90 fuga.mod
しかし、コマンドの実行に先立って fuga.mod が存在していなければならない。
あれ?
fuga.f90 を先にコンパイルするってわかってたら最初から Makefile にそう書くってーの!
つかえねーじゃん!!