Makefile ifeq 逻辑与

问题描述 投票:0回答:3

我想检查 GNU make 文件的

if
循环中的多个条件。这是一个例子:

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

正确的做法是什么?

unix makefile gnu-make gnu boolean-logic
3个回答
42
投票

虽然 Hasturkun 的解决方案可行,但我认为写这个的惯用方法是:

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

36
投票

您可以将

ifeq
与您的值串联使用,例如。

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

也可以使用条件函数,这在循环中更有可能有用(因为

ifeq
可能不会在循环中执行您期望的操作,它将仅测试一次)。


0
投票

您可以将 false 语句放在两个 endif 后面:

ifeq ($(TEST_FLAG),TRUE)
ifeq ($(DEBUG_FLAG),FALSE)
true statement 
endif
endif
false statement
© www.soinside.com 2019 - 2024. All rights reserved.