Makefile中幾種賦值(= := ?= +=)

srrwlkblu發表於2017-06-01

Makefile中幾種賦值(= := ?= +=)

=  延時變數,只有被使用時才展開定義
:= 立即變數,定義時的賦值立即有效
?= 條件變數,當變數為空時才賦值
+= 追加賦值

示例:

VAR_A=abc
VAR_B=$(VAR_A) 222
VAR_C:=$(VAR_A)
VAR_A=def
#VAR_B的值會改變為def,而VAR_C的值還是為abc

VAR_A:=$(VAR_B)222
VAR_B=$(VAR_A)
#由於一開始VAR_B沒有值,所以VAR_A的值為222,VAR_B的值為222

VAR_D=111
VAR_D?=000
#VAR_D的值仍為111

VAR_E=file1.c
VAR_E+= file2.c
#VAR_E最後的值為file1.c file2.c
#等價於:
VAR_E=$(VAR_E) file2.c

相關文章