モジュールを使用するFortranプログラムを持っています。つまり、コンパイル時に.mod
ファイルが作成されています。 -files from src/
.o
-filesをobj/
と現在のフォルダのバイナリにすべて入れても問題なく動作します。のファイルをすべて使用するMakefile
を書きました。Makefile:新しいフォルダ用のFortranモジュールのコンパイルを避ける
私は今、私は、calc1/
にMakefile
をコピーcalc1/
でタイプmake all
とオブジェクト・ファイルがすでに存在しているので、それがないすべては、リンクである、すなわち、(calc1/
例えば)異なる計算の異なるフォルダに私のプログラムを再コンパイルします。ただし、プログラムにモジュールが含まれている場合、コンパイラは対応する.mod
ファイルがcalc1/
に存在する必要があります。今までは、すべてを再コンパイルしましたが(make clean all
)、プログラムが大きくなると時間がかかりすぎます!
私が思いついた解決策は、バイナリ用に特定のフォルダ(bin/
)を1つ作成することでした。しかし、これは実行可能なオプションではありません。なぜなら、待ち行列には、安定したバイナリが必要なジョブがあるからです。その間に新しい機能も試しています。
私は、.o
ファイルに似た.mod
ファイルを何らかの形で扱うソリューションを探しています。それらをobj/
に配置します。
...他の誰かがそれを確認する必要がありますので、私はこれらの日、これらのコンパイラを使用することはほとんどないが、フラグが
ifort
とpgf90
ため-module
で、私のconfigureスクリプトのいずれかに基づいて-J
を使用しますが、私はドンFortranを知っていない(ハ!)。コンパイラは現在のディレクトリに 'mod'ファイルを作成しますか?彼らは予測可能な名前を持っていますか(例えば 'foo.f90' =>' foo.mod')?コンパイラへの引数で名前を制御できますか? – Beta
右の 'mod'ファイルは現在のディレクトリに作成され、そのファイルに指定された名前が付けられます。 'foo.f90'は' module bar'を含み、ファイルは 'bar.mod'と名付けられます。他のファイルで名前が使われているので、 'main.f90'では' use bar'と書いてあるので、これはコンパイル時には制御できません。 – Jost