=
使用最后一个值进行展开
VIR_A = A
VIR_B = $(VIR_A) B
VIR_A = AA
VIR_B 最后为 AA B 而不是 A B
:=
即赋值
VIR_A := A
VIR_B := $(VIR_A) B
VIR_A := AA
VIR_B 为 A B
?=
?= 如果没有被赋值,则赋予等号后面的值。
VIR := old_value
VIR ?= new_value
如例子:VIR最后的值为old_value
特殊情况:VIR := 可以赋值为空值
+=
concat