2011-06-23 84 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

如果我想使用或? –