0

我有一个制作规则:

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

(并且命令前有标签,但我不知道如何让它们出现在这里)

这行得通,但是当我尝试一次性完成时...

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

make 不解析最终的宏。它仅向编译器发送“obj/”,编译器当然无法处理它。有人可以向我解释为什么,以及如何比我在第一个版本中更有效地重写这条规则吗?

此外,我真正在做的是试图让 make 了解某些文件依赖于 .mod 文件,这就是更新 .mod 文件的方式。任何人都知道如何做到这一点,而无需使用 makedepend 或 cmake 之类的东西?谢谢!

4

1 回答 1

2

试试这个:

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

当一个模式规则有多个目标模式时,Make 知道运行一次规则将构建所有目标。

于 2012-07-17T21:56:20.100 回答