ポイントは
- make のデフォルトルールをできるだけ活用する
- mod の依存関係をただしく反映する
でも実際はモジュールが再コンパイルされても .mod ファイルが更新されるとは限らない。そのときはそのモジュールを use しているファイルは再コンパイルの必要がないはずだ。
サンプルを示すよ。ターゲット sample は main.o と sub.o をリンクしてて、どちらも Fortran のプログラム。そして main.f90 はモジュール sub を use している。
ポイントは Makefile に記述した %.mod のデフォルトルール。.mod は .f90 と .o に依存するけど作成のためには何もしない。参考リンクでは true にしてるけど Windows だと true 使えなかったりするので : にした。
こうしておくとオブジェクト間の依存関係を Makefile の最後の行のように素直に書くことができる。main.o は sub.mod に依存し sub.o には依存していない。
これで sub.f90 が更新されて sub.o が再作成されても sub.mod に変更がなければ main.o が再コンパイルされることはない。ただし sub.mod のみを削除するのは禁止な。
参考
http://d.hatena.ne.jp/pyridoxin/20110726/1311691190
http://lagrange.mechse.illinois.edu/f90_mod_deps/
0 件のコメント :
コメントを投稿