Makefile学习之路——3

特殊变量:

在Makefile中,有两个变量特殊变量会经常用到:MAKE和MAKECMDGOALS。MAKE变量表示的是当前处理Makefile的命令名是什么。当需要在Makefile中运行另一个Makefile时,需要用到这个变量。

1 .PHONY: all
2 all:
3     @echo "MAKE = $(MAKE)"

MAKECMDGOALS变量表示的是当前构建的目标名。

1 .PHONY: all clean
2 all clean:
3     @echo "$$@ = $@"
4     @echo "MAKECMDGOALS =$(MAKECMDGOALS)"

从测试结果来看,MAKECMDGOALS变量指的是用户输入的目标,当只运行make命令且不带参数时,虽然根据Makefile的语法规则,Makefile中的第一个目标即为默认目标,即all目标,但MAKECMDGOALS在这里例外,MAKECMDGOALS此时是空而不是all目标,这一点需要注意。

运行make时可以同时指定多个目标。make在获得了多个目标后,将以从左到右的顺序逐个地构建目标。

/*2017.5.6*/

 CURDIR:是make的内嵌变量,指当前目录。

echo $(CURDIR)可以测试makefile的当前目录。

原文地址:https://www.cnblogs.com/yangguang-it/p/6636567.html