日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Makefile由浅入深完全学习记录8】条件判断语句

發(fā)布時(shí)間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Makefile由浅入深完全学习记录8】条件判断语句 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

加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è)不同的變量或者變量和常量的值
ifxxx (arg1,arg2) #for true else #for false endif

注意事項(xiàng):
條件判斷語(yǔ)句只能用于控制make實(shí)際執(zhí)行的語(yǔ)句,但是不能控制規(guī)則中命令的執(zhí)行過(guò)程!!!

條件判斷語(yǔ)句的語(yǔ)法說(shuō)明:

  • 常用形式
ifxxx (arg1,arg2)
  • 其他合法形式
ifxxx "arg1","arg2" ifxxx 'arg1','arg2' ifxxx "arg1",'arg2' ifxxx 'arg1',"arg2"

注意下圖的問(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):

  • 條件判斷語(yǔ)句之前可以有空格,但是不能有tab鍵(’\t’)
  • 在條件判斷語(yǔ)句中,不要使用自動(dòng)變量$@ $^ $<
  • 一個(gè)完整的條件判斷語(yǔ)句,必須位于同一個(gè)makefile中
  • 條件判斷語(yǔ)句類(lèi)似于C語(yǔ)言中的宏,預(yù)處理階段有效,執(zhí)行階段無(wú)效
  • 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é):

  • 條件判斷語(yǔ)句根據(jù)條件的值來(lái)決定make的執(zhí)行
  • 條件判斷可以比較兩個(gè)不停變量或者變量和常量
  • 條件判斷在預(yù)處理階段有效,在執(zhí)行階段無(wú)效
  • 條件判斷不能控制規(guī)則中命令的執(zhí)行過(guò)程
  • 想一起探討以及獲得各種學(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。