條件語句中使用到了三個關鍵字:「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」相反