我怎样才能和gnumakefile条件一起?

时间:2012-05-20 00:39:56

标签: syntax makefile logic boolean-expression gnu-make

使用gmake v3.80,如何创建一个将两个OR组合在一起的规则。我从这段代码开始:

ifeq "$(BUILD_ARCH)" "lnx86_22"
TEST_ARCH := i86
endif
ifeq "$(BUILD_ARCH)" "linux_24_i86"
TEST_ARCH := i86
endif

并希望将两个ifeq(s)组合成一个如果将两个条件组合在一起,也许是这样的?

ifeq "$(BUILD_ARCH)" "lnx86_22" OR "$(BUILD_ARCH)" "linux_24_i86"
TEST_ARCH := i86
endif

允许我这样做的实际语法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用$(filter ...)。像这样:

ifneq (,$(filter $(BUILD_ARCH),lnx86_22 linux_24_i86))
TEST_ARCH := i86
endif

另一种选择是使用构造的变量名称:

lnx86_22_ARCH :=     i86
linux_24_i86_ARCH := i86
    ...

TEST_ARCH := $($(BUILD_ARCH)_ARCH)

ifeq (,$(TEST_ARCH))
$(error Failed, unknown arch $(BUILD_ARCH))
Failed, unknown arch $(BUILD_ARCH)
endif

如果您能够升级到更新版本的GNU make,还有其他选择。