Makefile的賦值運算符(=, :=, +=, ?=)
Makefile的賦值運算符(=, :=, +=, ?=) 總結: = 是最基本的賦值 := 會覆蓋變數之前的值 ?= 變數為空時才給值,不然則維持之前的值 += 將值附加到變數的後面 另外 =, :=這兩賦值運算符號在網路上查詢,常常會看到這種說法: = 在執行時擴展(values within it are recursively expanded when the variable is used, not when it's declared) := 在定義時擴展(values within it are expanded at declaration time) 而白話一點的說法如下範例所示 1. = make會將整個makefile展開後,才決定變數的值。也就是说,變數的值會是整個Makefile中最後被指定的值。看例子: x = hello y = $(x) world! x = hi all: @echo $(y) 在上例中,輸出結果將會是 hi world! ,而不是 hello world! 2. := 變數的值在Makefile展開途中就會被給定,而不是整個Makefile展開後的最终值。 x := hello y := $(x) world! x := hi all: @echo $(y) 輸出結果 ====> hello world!