需求描述
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