Makefile的call函数

来源:互联网 发布:阿里订单打印软件 编辑:程序博客网 时间:2024/05/03 06:54

写了个例子来研究Makefile的call函数:

#define a multiline variabledefine target echo $@echo $@endef#define the target which is the first target, so default targetall:$(call target,all)#define the second target, we must explicitly make itclean:$(call target,clean)#declare that all and clean are phony targets.PHONY: all clean

执行make或make all的结果是:

echo allallecho allall


执行make clean的结果是:

echo cleancleanecho cleanclean

其实源代码可以这么写的:

#define a multiline variabledefine target echo $@echo $@endef#define the target which is the first target, so default targetall:$(call target)#define the second target, we must explicitly make itclean:$(call target)#declare that all and clean are phony targets.PHONY: all clean

结果跟上面一样。


小结:Makefile中的第一个目标是最终目标,是make默认执行的目标,call函数会以此调用多行变量的每一个(此处是make命令,所以会被执行了)。然后$@自动化变量在make执行是会被赋值为当前的目标。