2016-05-01 62 views
2
gg=mpif90 
DEPS=matrix.mod 
OBJ= main.o sub1.o 

main.out: $(OBJ) 
    $(gg) -o [email protected] $^ 
%.mod:%.90 %.o 
    $(gg) -c -o [email protected] $^ 

%.o:%.f90 $(DEPS) 
    $(gg) -c -o [email protected] $^ 

.PHONY: clean 

clean: 
    -rm -f *.o *~ 

見る。メインプログラムはmain.f90です。 sub1.f90main.f90によって呼び出されます。どちらもモジュールであるmatrix.f90を使用します。私はcompile then linkなしで実行可能プログラムを直接生成できることを知っています。しかし、私はそのように好きではありません。モジュールを使用してFortranのメークファイルを書き込む方法は?

+0

難しい質問:問題は、 '.mod'ファイルの名前がコンパイラによって異なることです。私は、標準がこれに同意したかどうかはわかりません。 –

答えて

1

modファイルが副産物%.oをコンパイルするだけで、あなたはこれが、すべてのほとんどのケースでは動作しませんが、

%.mod: %.90 
    $(gg) -c $^ 

に変更し、ここ-o [email protected]を使うべきではありません。 modファイルの名前は、モジュール名にのみ依存するため、ソースファイル名とは関係ありません。したがって、最も安全な方法は依存関係を明示的に指定することです。

matrix.mod: matrix.f90 
    $(gg) -c matrix.f90 

f90ソースファイルに2つ以上のモジュールを含めることがあります。

matrix33.mod matrix99.mod: matrix.f90 
    $(gg) -c matrix.f90 
関連する問題