Makefile初探3-变量的赋值运算符
程序员文章站
2022-06-04 08:51:22
...
(1) = 最简单的赋值
用=赋值的变量,在被解析时他的值取决于最后一次赋值时的值,所以你看变量引用的值时不能只往前面看,还要往后面看。
注意:Makefile中并不要求赋值运算符两边一定要有空格或者无空格,这一点比shell的格式要求要松一些。
1 A=abc
2 B=$(A)def
3 A=gh
4
5 all:
6 echo $B
输出:
[email protected]:~/liyijun$ make all
echo ghdef
ghdef
(2) := 一般也是赋值
用:=来赋值的,则是就地直接解析,只用往前看即可。
1 A=abc
2 B:=$(A)def
3 A=gh
4
5 all:
6 echo $B
输出:
[email protected]:~/liyijun$ make all
echo abcdef
abcdef
解析谁就看谁是:= 或者是= 虽然是A是=,但是B是:=,所以就按照:=执行
(3)?=
如果变量没有赋值过(前后都要看)则执行这条赋值,如果前面已经赋值过了则本行被忽略。(实验可以看出:所谓的没有赋值过其实就是这个变量没有被定义过)
实例1:
1 var=abcd
2 var?=ef
3
4 all:
5 echo $(var)
输出:
abcd
实例2:
1
2 var?=ef
3 var=abcd
4 all:
5 echo $(var)
输出:
abcd
实例3:
2 var?=ef
3 var=
4 all:
5 echo $(var)
输出为空,说明空值也算是赋值了
(4)+=
用来给一个已经赋值的变量接续赋值,意思就是把这次的值加到原来的值的后面,有点类似于strcat。(在shell makefile等文件中,可以认为所有变量都是字符串,+=就相当于给字符串stcat接续内容)(注意一个细节,+=续接的内容和原来的内容之间会自动加一个空格隔开)
实例:
1 var=ab
2 var+=cd
3 all:
4 echo $(var)
5 var+=ef
输出:
ab cd ef
REF:
朱老师讲义
上一篇: centos qemu安装的历史记录
下一篇: u-boot的配置过程分析