1. makefile中预定义的变量
- 自动变量:
$@, $^, $< ...... - 特殊变量:
$(MAKE), $(MAKECMDGOALS), $(MAKEFILE_LIST) ......
2. 自动变量的含义
$@
: 当前规则中触发命令被执行的目标- $^:当前规则中的所有依赖
$<
:当前规则中的第一个依赖
3. 自动变量的使用示例
注意:
1)$
对于makefile有特殊的含义,输出时需要加上一个$
进行转义
2) $@
对Bash Shell有特殊含义,输出时需要加上\
进行转义
输出:
可以看到,这里对$@的输出有问题,需要改为:
因此,我们可以将上一个章节中的文件修改为:
注意:注释#前不要加空格,否则在make时会显示注释
4. 特殊变量的含义
$(MAKE)
:当前make解释器的文件名$(MAKECMDGOALS)
:命令行中指定的目标名(make的命令行参数)$(MAKEFILE_LIST)
:make所需要处理的makefile文件列表,当前makefile的文件名总是位于列表的最后,文件名之间以空格进行分隔$(MAKE_VERSION)
:当前make解释器的版本$(CURDIR)
:当前make解释器的工作目录$(.VARIABLES)
:所有已经定义的变量名列表(预定义变量和自定义变量)
在上面的Makefile文件中加入:
注意:使用
$(.VARIABLES)
能够获取所有的特殊变量