Makefile中支持條件判斷語(yǔ)句,可以直接比較兩個(gè)不同變量的值和常量值。
注意:條件判斷語(yǔ)句只能用于控制make實(shí)際執(zhí)行的語(yǔ)句,不能控制規(guī)則中命令的執(zhí)行過程。
條件判讀語(yǔ)法說明:
條件判斷關(guān)鍵字:
示例:
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、網(wǎng)站制作、網(wǎng)站建設(shè)易于使用并且具有良好的響應(yīng)性。
.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
輸出結(jié)果:
1.條件判斷語(yǔ)句之前可有有空格,但不能有Tab字符(‘\t’)
2.在條件語(yǔ)句中不要使用自動(dòng)變量( $@ $^ @<)
3.一條完整的條件語(yǔ)句必須位于同一個(gè)Makefile中
4.條件判斷類似C語(yǔ)言中的宏,預(yù)處理階段有效,執(zhí)行階段無效
5.Make在加載Makefile時(shí),首先計(jì)算表達(dá)式的值(賦值方式不同,計(jì)算方式不同),根據(jù)判斷語(yǔ)句單純表達(dá)式?jīng)Q定執(zhí)行的內(nèi)容。
問題,下面Makefile執(zhí)行后是否相同??
答案:不同,前者的賦值方式可以做在make加載Makefile時(shí)判斷出變量是否定義,而后者無法做出判斷。
示例:
.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
輸出結(jié)果: