make规则中未解析宏

时间:2012-07-17 17:16:22

标签: makefile gnu-make fortran90

我有制定规则:

%.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?谢谢!

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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