= 是最基本的賦值
:= 是覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號後面的值
+= 是添加等號後面的值
1、“=”
make會將整個makefile展開後,再決定變量的值。也就是說,變量的值將會是整個makefile中最後被指定的值。看例子:
x = foo
y = $(x) bar
x = xyz
在上例中,y的值將會是 xyz bar ,而不是 foo bar 。
2、“:=”
“:=”表示變量的值決定於它在makefile中的位置,而不是整個makefile展開後的最終值。
x := foo
y := $(x) bar
x := xyz