2011-06-23 114 views
24

我想檢查GNU make文件的if循環中的多個條件。這裏有一個例子:Makefile ifeq logical AND

ifeq ($(TEST_FLAG),TRUE && ($(DEBUG_FLAG),FALSE)) 
true statement 
else 
false statement 
endif 

什麼是正確的做法呢?

回答

25

您可以使用ifeq與您的值串聯,例如。

ifeq ($(TEST_FLAG)$(DEBUG_FLAG),TRUEFALSE) 
    do something 
endif 

它也可以使用條件的功能,這是更可能是在一個循環中有用(如ifeq可能不會做,你在一個循環中會發生什麼,它會準確地測試一次)。

+0

我覺得之前'TRUEFALSE' _breaks_支票上的領先空間,而且永遠也不會工作,因爲'ifeq'非常敏感關於領先的空間。你可以檢查它,如果我是正確的編輯你的答案? –

+0

@AlBundy:刪除空格,謝謝。 – Hasturkun

19

雖然Hasturkun的解決方案將工作,我覺得寫這個的慣用方法是:

ifeq ($(TEST_FLAG),TRUE) 
ifeq ($(DEBUG_FLAG),FALSE) 
# Stuff 
endif 
endif 
+0

你應該在其他部分,以便執行虛假陳述 –

+0

ifeq(ifeq())ifeq()... endif else ifeq()... endif .. ifeq endif'。我得到錯誤無關'其他'。 – NickSoft

+1

如果我想使用或? –