目录
需求描述
Makefile需要从shell脚本中读取变量
Makefile 读取变量
# 打印版本号 .PHONY: echo-version echo-version: echo ${VERSION};
直接打印发现是空的
$ make echo-version echo ;
可以读取环境变量
$ export VERSION='0.0.1' && make echo-version echo 0.0.1; 0.0.1
可以通过命令行传递变量
$ make echo-version VERSION='0.0.1' echo 0.0.1; 0.0.1
Makefile文件中定义变量
# makefile文件中定义变量 VERSION="0.0.2" # 打印版本号 .PHONY: echo-version echo-version: echo ${VERSION};
$ make echo-version echo "0.0.2"; 0.0.2
Makefile从shell脚本中导入变量
# 打印版本号 .PHONY: echo-version echo-version: . ./version.sh && echo $${VERSION};
注意:使用两个
$$
而不是$
version.sh
#!/bin/bash ################################## # 版本号 ################################## export VERSION='0.0.3'
$ make echo-version . ./version.sh && echo ${VERSION}; 0.0.3
优先级
原则:谁最后导入,谁的优先级最高
1、导入shell中的变量
version.sh
#!/bin/bash export VERSION='0.0.1'
Makefile
# 打印版本号 VERSION='0.0.3' .PHONY: echo-version echo-version: . ./version.sh && echo $${VERSION};
执行
$ export VERSION='0.0.4' && make echo-version VERSION='0.0.2' . ./version.sh && echo ${VERSION}; 0.0.1
2、传递参数
Makefile
# 打印版本号 VERSION='0.0.3' .PHONY: echo-version echo-version: echo ${VERSION};
执行
$ export VERSION='0.0.4' && make echo-version VERSION='0.0.2' echo ${VERSION}; 0.0.2
3、内部变量
Makefile
# 打印版本号 VERSION='0.0.3' .PHONY: echo-version echo-version: echo ${VERSION};
执行
$ export VERSION='0.0.4' && make echo-version echo '0.0.3'; 0.0.3
4、全局变量
Makefile
# 打印版本号 # VERSION='0.0.3' .PHONY: echo-version echo-version: echo ${VERSION};
执行
$ export VERSION='0.0.4' && make echo-version echo 0.0.4; 0.0.4
参考