在Makefile中,變量是一種存儲值的方式,可以在整個Makefile中重復使用
在Makefile中,使用等號(=)或者冒號等號(:=)來定義變量。等號表示懶惰求值(lazy evaluation),即只有在使用變量時才會計算其值;冒號等號表示立即求值(immediate evaluation),即在定義變量時就計算其值。
# 使用等號定義變量(懶惰求值)
variable1 = value1
# 使用冒號等號定義變量(立即求值)
variable2 := value2
要在Makefile中使用變量,只需在變量名前加上美元符號($)和括號(())。
# 使用變量
target:
@echo $(variable1)
@echo $(variable2)
在Makefile中,可以使用等號(=)或者冒號等號(:=)來修改變量的值。注意,這里的行為與定義變量時略有不同。使用等號(=)時,如果變量已經被定義過,那么新值將覆蓋舊值;使用冒號等號(:=)時,如果變量已經被定義過,那么新值將被追加到舊值之后。
# 修改變量值
variable1 = new_value1
variable2 := new_value2
要刪除變量,可以使用undefine
指令。
# 刪除變量
undefine variable1
undefine variable2
在Makefile的條件語句(如ifeq
、ifneq
、ifdef
和ifndef
)中,可以使用變量來進行比較。
# 條件語句中的變量
ifeq ($(variable1), value1)
# 當variable1等于value1時執行的代碼
endif
Makefile中的函數可以接受變量作為參數,并返回一個新的值。
# 函數和變量
variable3 = $(subst old,new,$(variable1))
這里,$(subst old,new,$(variable1))
函數將variable1
的值中的所有"old"替換為"new",并將結果賦值給variable3
。