了解Makefile的基本概念

时间:2018-12-03 11:21:16

标签: linux shell makefile gnu-make

我有以下要升级的makefile,但是有一个我无法理解含义的元素:

$(OBJDIR)/%.o: %.f Makefile
       @$(F90) $(FFLAGS) $(POPTIONS) -o $@ $<    
%.o:        %.f Makefile
       @make $(OBJDIR)/$@

我知道$(OBJDIR)/%.o:是通过执行带有标志等的f90编译器获得的。 但是为什么我需要%.o规则,以及@make是什么意思。我是否缺少对Makefile的工作原理的一般了解?

1 个答案:

答案 0 :(得分:2)

@make表示调用make,但不在输出(@符号)中回显。正确的方法是@${MAKE},因为make可能不引用正在执行的make,而${MAKE}却可以引用。

在makefile文件中,规则必须创建它们承诺的目标文件(除非已将目标文件标记为.PHONY)。在这里,该%.o规则承诺将建立%.o,但实际上它是在构建$(OBJDIR)/%.o。这是一条违反规则的人。