Makefile赋值=/:=/?=/+=区别
=: 是最基本的赋值:=: 是覆盖之前的值?=: 是如果没有被赋值过就赋予等号后面的值+=: 是添加等号后面的值
其中=,make会将整个Makefile展开后,再决定变量的值。也就是说,变量的值将会是整个Makefile中最后被指定的值。如示例:
x = foo
y = $(x) bar
x = xyz在上例中,y的值将会是xyz bar,而不是foo bar。
而:=,表示变量的值决定于它在Makefile中的位置,而不是整个Makefile展开后的最终值:
x := foo
y := $(x) bar
x := xyz在上例中,y的值将会是foo bar,而不是xyz bar了。