Makefile当中有各种不同的赋值符号,
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
其中=和:=都是给变量赋值,他们之间的区别是什么呢?
代码在make的时候,是将整个Makefile展开之后再去决定变量的值,因此获取的变量的值会是它最终的赋值。但是使
用:=符号的号,或者的变量值就是它当时的变量值。举个例子说明:
x=kitty
y=hello $(x)
x=mickey
最终y的值是hello mickey;而如果是下面的情况
x:=kitty
y:=hello $(x)
x:=mickey
则y的最终值是hello kitty