ifeq ifneq ifdef ifndef


條件語句中使用到了三個關鍵字:“ifeq”、“else”和“endif”。其中:

1.        “ifeq”表示條件語句的開始,並指定了一個比較條件(相等)。之后是用圓括號括包圍的、使用逗號“,”分割的兩個參數,和關鍵字“ifeq”用空格分開。參數中的變量引用在進行變量值比較時被展開。“ifeq”之后就是當條件滿足make需要執行的,條件不滿足時忽略。

2.        “else”之后就是當條件不滿足時的執行部分。不是所有的條件語句都需要此部分。

3.        “endif”表示一個條件語句的結束,任何一個條件表達式都必須以“endif”結束。

此關鍵字用來判斷參數是否相等,格式如下:

`ifeq (ARG1, ARG2)'

`ifeq 'ARG1' 'ARG2''

`ifeq "ARG1" "ARG2"'

`ifeq "ARG1" 'ARG2''

`ifeq 'ARG1' "ARG2"'替換展開“ARG1”和“ARG1”后,對它們的值進行比較

通常我們會使用它來判斷一個變量的值是否為空(不是任何字符)。參數值可能是通過引用變量或者函數得到的,因而在展開過程中可能造成參數值中包含空字符(空格等)。一般在這種情況時我們使用make的“strip”函數來對它變量的值進行處理,去掉其中的空字符。格式為:

ifeq ($(strip $(foo)),)

TEXT-IF-EMPTY

endif

即就是在“$(foo)”中存在若干前導和結尾空格,“TEXT-IF-EMPTY”也會被作為Makefile需要執行的一部分。

關鍵字“ifneq”實現的條件判斷語句和“ifeq”相反

關鍵字“ifdef”

關鍵字“ifdef”用來判斷一個變量是否已經定義。格式為:

`ifdef VARIABLE-NAME'

如果變量“VAEIABLE_NAME”的值非空(在Makefile中沒有定義的變量的值為空),那么表達式為真

例1:

bar =

foo = $(bar)

ifdef foo

frobozz = yes

else

frobozz = no

endif

 

例2:

foo =

ifdef foo

frobozz = yes

else

frobozz = no

endif

例1中的結果是:“frobozz = yes”;而例2的結果是:“frobozz = no”。

關鍵字“ifndef”實現的功能和“ifdef”相反


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM