今天上课的时候,老师问到makaefile文档中的赋值符,不单单是"=",还有”?=“,”:=“,”+ =“。这些赋值符虽然都是赋值的功能,但每一个之间又有什么区别?
简单来说,这些赋值符的含义分别是
=
延时赋值:=
立即赋值
?=
条件赋值+=
追加赋值
“=” :输出的结果和最后的赋值有关
“:=” :输出的结果只跟赋值前的值有关,和赋值后的无关
a = 123
b = $(a) 456
c := $(a)
a = 789
结果就是b:789 456,c:123
“?=”:如果变量之前没有值则赋值,有值则不变
a = 123
a ?= 456
此时a:123
如果
a ?= 456
则a:456
“+ =”:追加赋值,就是在原有的值的基础上再加上现在赋的这个值
a = 123
a += 456
此时a:123 456
相当于
a = 123
a = $(a) 456