=

使用最后一个值进行展开

  1. VIR_A = A
  2. VIR_B = $(VIR_A) B
  3. VIR_A = AA
  4. VIR_B 最后为 AA B 而不是 A B

:=

即赋值

  1. VIR_A := A
  2. VIR_B := $(VIR_A) B
  3. VIR_A := AA
  4. VIR_B A B

?=

  1. ?= 如果没有被赋值,则赋予等号后面的值。
  2. VIR := old_value
  3. VIR ?= new_value
  4. 如例子:VIR最后的值为old_value
  5. 特殊情况:VIR := 可以赋值为空值

+=

concat