我有制定规则:
%.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?谢谢!
答案 0 :(得分:2)
试试这个:
%.mod %.o: %.f90
$(FORTRAN) $(FFLAGS) $< -o obj/$*.o
当模式规则具有多个目标模式时,Make了解运行规则一次将构建所有目标。