Makefile中變量賦值方法的區別

在Makfile中一共有4中賦值方法,形式分別以下:shell

 VAR = value
 VAR ?= value
 VAR := value
 VAR += value

= 遞歸展開賦值

賦值不是當即生效,要等到在使用變量VAR時才展開。若一個變量引用另一個變量,兩個變量定義的位置,誰在前誰在後沒有任何關係,都能達到一樣的效果。也是很容易出錯的地方,例如:spa

SUBDIR=workspace
DIR=$(SUBDIR)
SUBDIR=/usr/local/
all:
    @echo $(DIR)

結果是:/usr/local/code

:= 直接賦值

不會遞歸展開,若引用的變量不存在,就展開爲空串遞歸

?= 條件賦值

若是變量沒有初始化,就給它賦值class

+= 追加賦值

在已有賦值後追加賦值變量

相關文章
相關標籤/搜索