环境变量(全局变量)
- makefile中能够直接使用环境变量的值
- 定义了同名变量,环境变量将被覆盖
- 运行make时指定“-e”选项,优先使用环境变量
为什么要在makefile中使用环境变量?
- 环境变量可以在所有makefile中使用
- 过多的依赖环境变量会导致移植性降低
变量在不同makefile之间的传递方式
- 定义make命令行变量进行传递(推荐)
- 使用export定义变量进行传递(定义临时环境变量)
- 直接在外部定义环境变量进行传递
目标变量(局部变量)
作用域只在指定目标及连带规则中
var := DT test : var := test-var(var的作用域是test目标及其依赖的规则) test : @echo "test:" @echo "var => $(var)"
模式变量
- 模式变量是目标变量的扩展
作用域只在符合模式的目标及连带规则中
new := DT %e : override new := test-new rule : @echo "rule:" @echo "new => $(new)"
makefile的三种变量
- 全局变量:makefile外部定义的环境变量
- 文件变量:makefile中定义的变量
- 局部变量:指定目标的变量