makefile--if條件判斷語(yǔ)句語(yǔ)法與使用

條件判斷語(yǔ)句


1. makefile中支持條件判斷語(yǔ)句

  • 可以根據(jù)條件的值來(lái)決定make的執(zhí)行
  • 可以比較兩個(gè)不同變量或者變量和常量值
ifxxx (arg1,arg2)
#do true
else
#do false
#endif

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


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

  • 常用形式
    ifxxx (arg1,arg2)
  • 其它合法形式
    ifxxx “arg1” “arg2”
    ifxxx ‘a(chǎn)rg1’ ‘a(chǎn)rg2’
    ifxxx “arg1” ‘a(chǎn)rg2’
    ifxxx ‘a(chǎn)rg1’ “arg2”


    8-1 if格式.png

3. 條件判斷關(guān)鍵字

關(guān)鍵字 功能
ifeq 判斷參數(shù)是否相等,相等為true,否則為false
ifneq 判斷參數(shù)是否不相等,不相等為true,否則為false
ifdef 判斷參數(shù)是否有值,有值為true,否則為false
ifndef 判斷參數(shù)是否沒(méi)有值,沒(méi)有值為true,否則為false
.PHONY : test

var1 := A
var2 := $(var1)
var3 := 

test :
    ifeq ($(var1),$(var2))
    @echo "var1 == var2"
    else
    @echo "var1 != var2"
    endif

    ifneq ($(var3), )
    @echo "var3 is not empty"
    else
    @echo "var3 is empty"
    endif

    ifdef var1
    @echo "var1 is not empty"
    else
    @echo "var1 is empty"
    endif

    ifndef var3
    @echo "var3 is empty"
    else
    @echo "var3 is not empty"
    endif

8_1.PNG

4.一些工程經(jīng)驗(yàn)

  • 條件判斷語(yǔ)句之前可以有空格,但不能有Tab字符(’\t’)
  • 在條件語(yǔ)句中不要使用自動(dòng)變量(@,^,$<)
  • 一條完整的條件語(yǔ)句必須位于同一個(gè)makefile中
  • 條件判斷類似C語(yǔ)言中的宏,預(yù)處理階段有效,執(zhí)行階段無(wú)效
  • make在加載makefile時(shí)
    首先計(jì)算表達(dá)式的值(賦值方式不同,計(jì)算方式不同)
    根據(jù)判斷語(yǔ)句的表達(dá)式決定執(zhí)行的內(nèi)容

小結(jié):

  • 條件判斷根據(jù)條件的值決定make的執(zhí)行
  • 條件判斷可以比較兩個(gè)不同變量或者變量和常量值
  • 條件判斷在預(yù)處理階段有效,執(zhí)行階段無(wú)效
  • 條件判斷不能控制規(guī)則中命令的執(zhí)行過(guò)程
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 來(lái)自陳浩的一片老文,但絕對(duì)營(yíng)養(yǎng)。 示例工程:3 個(gè)頭文件*.h,和 8 個(gè) C 文件*.c。 初 編譯過(guò)程,源文件...
    周筱魯閱讀 4,778評(píng)論 0 17
  • 使用條件判斷 使用條件判斷,可以讓make根據(jù)運(yùn)行時(shí)的不同情況選擇不同的執(zhí)行分支。條件表達(dá)式可以是比較變量的值,或...
    Stan_Z閱讀 1,044評(píng)論 0 6
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,502評(píng)論 0 13
  • VR作為新型的高科技技術(shù),從開始到現(xiàn)在,一直廣受關(guān)注,谷歌、微軟、三星、高通等全球性企業(yè)先后入局VR行業(yè),并在建立...
    邦悅信息閱讀 426評(píng)論 0 0
  • 在ES5中,var命令會(huì)發(fā)生”變量提升“現(xiàn)象,即變量可以在聲明之前使用,值為undefined。這種現(xiàn)象多多少少是...
    邪筱步閱讀 309評(píng)論 0 3

友情鏈接更多精彩內(nèi)容