3

モジュールを使用する Fortran プログラムがあります。つまり、.modコンパイル中にファイルを作成します。私はまた、作成されたすべてのファイルとバイナリを現在のフォルダーに置くすべてのファイルMakefileを使用するa を書きましたが、すべて正常に動作します。.f90src/.oobj/

オブジェクトファイルが既に存在するため、プログラムを別のフォルダーに再コンパイルして、さまざまな計算を行います (たとえば、) calc1/。ただし、プログラムにモジュールが含まれている場合、コンパイラは、対応する-files が に存在する必要があります。今まではすべてを再コンパイルしていましたが ( )、プログラムが大きくなると時間がかかりすぎます。Makefilecalc1/make allcalc1/.modcalc1/make clean all

私が思いついた解決策は、バイナリ用に特定のフォルダーを 1 つ用意することです ( bin/)。しかし、これは実行可能なオプションではありません。キューにジョブがあり、明らかに安定したバイナリが必要であり、その間に新しい機能も試しているからです。

だから、私は何らかの方法で -files を -files と同様に扱う解決策を探してい.modます。.oobj/

4

1 に答える 1

5

(ほとんどの?) コンパイラは、モジュール ファイル パスを変更するオプションを指定すると思います。のgfortran場合、オプションは-Jorです-M (man ページから):

-Jdir
-Mdir
       This option specifies where to put .mod files for compiled modules.  It is also
       added to the list of directories to searched by an "USE" statement.

       The default is the current directory.

       -M is deprecated to avoid conflicts with existing GCC options.

ほとんどのコンパイラは、含まれているディレクトリで .mod ファイルを探すと思います-I

編集

gfortran 4.6 以降、-Mはサポートされなくなりました。使用する-J

私のconfigureスクリプトの1つに基づいて、フラグは-moduleforifortでありpgf90、最近はこれらのコンパイラをほとんど使用しないため、他の誰かが確認する必要があります...

于 2012-04-12T13:23:25.670 に答える