在Makefile文件中,赋值语句包括: "=", ":=", "?="等;
1) "=" : 使用"="进行赋值,变量的值是整个Makefile中最后被指令的值。
例如:
VER_A = LL
VER_B = $(VER_A) BB
VER_A = QQ
经过上面的赋值后,最后VER_B的值是"QQ B",而不是"LL B",在make编译时会将整个makefile展开,最终决定变量的值。
2) ":=" : 直接赋值,赋予当前位置的值。
VER_A := LL
VER_B := $(VER_A) BB
VER_A := QQ
最后VER_B的值是"LL B",相比于"=",":=" 才是真正意义上的直接赋值。
3) "?=" : 表示如果该变量没有被赋值,则赋予等号后的值。
VER_NAME ?= New_Value
target:
@echo $(VER_NAME)
在该式中 VER_NAME的值为: New_Value
VER_NAME := Value
VER_NAME ?= New_Value
target:
@echo $(VER_NAME)
在该式中 VER_NAME的值为: Value
4) "+=" : 累加,表示将等号后面的值添加到前面的变量上。(与C language代码风格相同) [+=] : 追加赋值,旧值保持不变,将新值黏贴在旧值后面。
VER_NAME := Value
VER_NAME += New_Value
target:
@echo $(VER_NAME)
在该式中 VER_NAME的值为: Value New_Value