makefile中的 ifeq ifneq ifdef ifndef條件判斷

feq ifneq ifdef ifndef

條件語句中使用到了三個關鍵字:「ifeq」、「else」和「endif」。其中:函數

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

2.        「else」以後就是當條件不知足時的執行部分。不是全部的條件語句都須要此部分。ip

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

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

`ifeq (ARG1, ARG2)'引用

`ifeq 'ARG1' 'ARG2''di

`ifeq "ARG1" "ARG2"'make

`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」相反

相關文章
相關標籤/搜索