您好,登錄后才能下訂單哦!
Makefile中支持條件判斷語句,可以直接比較兩個不同變量的值和常量值。
注意:條件判斷語句只能用于控制make實際執(zhí)行的語句,不能控制規(guī)則中命令的執(zhí)行過程。
條件判讀語法說明:
條件判斷關鍵字:
示例:
.PHONY : test
var1 := A
var2 := $(var1)
var3 :=
test:
ifeq ($(var1),$(var2))
@echo "var1 == var2"
else
@echo "var1 != var2"
endif
ifneq ($(var2),)
@echo "var2 is NOT empty"
else
@echo "var2 is empty"
endif
ifdef var2
@echo "var2 is NOT empty"
else
@echo "var2 is empty"
endif
ifndef var3
@echo "var3 is empty"
else
@echo "var3 is NOT empty"
endif
輸出結果:
1.條件判斷語句之前可有有空格,但不能有Tab字符(‘\t’)
2.在條件語句中不要使用自動變量( $@ $^ @<)
3.一條完整的條件語句必須位于同一個Makefile中
4.條件判斷類似C語言中的宏,預處理階段有效,執(zhí)行階段無效
5.Make在加載Makefile時,首先計算表達式的值(賦值方式不同,計算方式不同),根據(jù)判斷語句單純表達式?jīng)Q定執(zhí)行的內(nèi)容。
問題,下面Makefile執(zhí)行后是否相同??
答案:不同,前者的賦值方式可以做在make加載Makefile時判斷出變量是否定義,而后者無法做出判斷。
示例:
.PHONY : test
var1 :=
var2 := $(var1)
var3 =
var4 = $(var3)
#var3 = 3
test:
ifdef var1
@echo "var1 is defined"
else
@echo "var1 is NOT defined"
endif
ifdef var2
@echo "var2 is defined"
else
@echo "var2 is NOT defined"
endif
ifdef var3
@echo "var3 is defined"
else
@echo "var3 is NOT defined"
endif
ifdef var4
@echo "var4 is defined"
else
@echo "var4 is NOT defined"
endif
輸出結果:
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。