第五部分 :预定义变量的使用
5.1 在makefile中存在一些预定义的变量
- 自动变量
- $@,$^,$<
- 特殊变量
- $(MAKE),$(MAKECMDGOALS),$(MAKEFILE_LIST)
- $(MAKE_VERSION),$(CURDIR),$(.VARIABLES)
5.2 自动变量的意义
- $@
- 当前规则中触发命令被执行的目标
- $^
- 当前规则中的所有依赖
- $<
- 当前规则中的第一个依赖
5.3 自动变量的使用示例
注意:
1、“$”对于makefile有特殊含义
- 输出时需要加上一个“$”进行转义
2、“$@”对于 Bash Shell有特殊含义
- 输出时需要加上“\”进行转义
5.4 编程实验:自动变量的使用
.PHONY : all first second third
all : first second third
@echo "\$$@ => $@"
@echo "$$^ => $^"
@echo "$$< => $<"
firtst:
second:
third:
5.5 一些特殊变量的含义
$(MAKE)
- 当前make解释器的文件名
$(MAKECMDGOALS )
- 命令行中指定的目标名(make的命令行参数)
$(MAKEFILE_LIST)
- make所需要处理的makefile文件列表
- 当前makefile 的文件名总是位于列表的最后
- 文件名之间以空格进行分隔
5.6 编程实验:预定义变量示例一
.PHONY : all out
all out :
@echo "$(MAKE)"
@echo "$(MAKECMDGOALS)"
@echo "$(MAKEFILE_LIST)"
5.7 一些特殊变量的含义
$(MAKE_VERSION)
- 当前make解释器的版本
$(CURDIR)
- 当make 解释器的工作目录<