【Makefile由浅入深完全学习记录8】条件判断语句
加qq:1126137994 微信:liu1126137994 一起學(xué)習(xí)更多技術(shù)~
今天來(lái)學(xué)習(xí)Makefile中條件判斷語(yǔ)句!
Makefile也算是一門(mén)語(yǔ)言,它有自己的語(yǔ)法,那么它應(yīng)該也會(huì)像C/C++語(yǔ)言一樣,支持條件判斷語(yǔ)句!
Makefile中的條件判斷語(yǔ)句:
- 可以根據(jù)條件的值來(lái)決定make的執(zhí)行
- 可以比較兩個(gè)不同的變量或者變量和常量的值
注意事項(xiàng):
條件判斷語(yǔ)句只能用于控制make實(shí)際執(zhí)行的語(yǔ)句,但是不能控制規(guī)則中命令的執(zhí)行過(guò)程!!!
條件判斷語(yǔ)句的語(yǔ)法說(shuō)明:
- 常用形式
- 其他合法形式
注意下圖的問(wèn)題:
判斷語(yǔ)句前面可以是空格,但不能是tab鍵
條件判斷關(guān)鍵字:
下面看一個(gè)例子,來(lái)加深對(duì)上述理論的理解:
.PHONY : testvar1 := A var2 := $(var1) var3 := test:ifeq ($(var1),$(var2))@echo "var1 == var2"else@echo "var1 != var2"endififneq ($(var2),)@echo "var2 is NOT empty"else@echo "var2 is empty"endififdef var2@echo "var2 is NOT empty"else@echo "var2 is empty"endififndef var3@echo "var3 is empty"else@echo "var3 is NOT empty"endif一開(kāi)始make后有這個(gè)錯(cuò)誤:
這個(gè)錯(cuò)誤實(shí)際上是,判斷語(yǔ)句前面應(yīng)該是空格,而我的判斷語(yǔ)句前面都是tab字符,我將判斷語(yǔ)句前面的tab鍵全部刪除換成空格后,就可以了!
修改后,運(yùn)行make顯示:
下面總結(jié)的是Makefile中判斷語(yǔ)句的一些工程上的經(jīng)驗(yàn):
make在加載makefile時(shí)
*首先計(jì)算表達(dá)式的值(賦值方式不同,計(jì)算方式不同)
根據(jù)判斷語(yǔ)句的表達(dá)式*,決定執(zhí)行的內(nèi)容
分析一下,下圖中的兩個(gè)代碼,輸出是相同的么:
看看下面的代碼:
.PHONY : testvar1 := var2 := $(var1)var3 = var4 = $(var3)#var3 = 3 test:ifdef var1 @echo "var1 is defined"else@echo "var1 is NOT defined"endififdef var2@echo "var2 is defined" else@echo "var2 is NOT defined" endififdef var3 @echo "var3 is defined"else@echo "var3 is NOT defined"endififdef var4@echo "var4 is defined" else@echo "var4 is NOT defined" endif運(yùn)行make后顯示:
總結(jié):
想一起探討以及獲得各種學(xué)習(xí)資源加我:
qq:1126137994
微信:liu1126137994
可以共同交流關(guān)于嵌入式,操作系統(tǒng),C++語(yǔ)言,C語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)等技術(shù)問(wèn)題。
總結(jié)
以上是生活随笔為你收集整理的【Makefile由浅入深完全学习记录8】条件判断语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 软考论文案例-论微服务架构及其应用
- 下一篇: Face Alignment by 30