0

私はメイクルールを持っています:

%.mod: %.f90
       $(FORTRAN) $(FFLAGS) $< -o $(@:.mod=.o)
       mv $(@:.mod=.o) obj

(コマンドの前にタブがありますが、ここに表示する方法がわかりません)

これで動くのですが、一発でやろうとすると……

%.mod: %.f90
       $(FORTRAN) $(FFLAGS) $< -o obj/$(@:.mod=.o)

make は最終マクロを解決しません。単に「obj/」をコンパイラに送信するだけで、もちろん処理できません。誰かが私に理由と、最初のバージョンで行ったよりも効率的にこのルールを書き直す方法を説明できますか?

また、私が実際に行っていることは、一部のファイルが .mod ファイルに依存していることを make に理解させようとしており、それが .mod ファイルを更新する方法です。makedependやcmakeなどに行かずに、それを行う方法を知っている人はいますか? ありがとう!

4

1 に答える 1

2

これを試して:

%.mod %.o: %.f90
    $(FORTRAN) $(FFLAGS) $< -o obj/$*.o

パターン ルールに複数のターゲット パターンがある場合、Make は、ルールを 1 回実行するとすべてのターゲットがビルドされることを認識します。

于 2012-07-17T21:56:20.100 に答える