如何使用make的ifeq
运算符执行逻辑OR?
例如,我有(简化):
ifeq ($(GCC_MINOR), 4)
CFLAGS += -fno-strict-overflow
endif
ifeq ($(GCC_MINOR), 5)
CFLAGS += -fno-strict-overflow
endif
但是想要巩固这些线。
(是的,是的,自动工具,配置等;对于当前情况来说太繁重了,希望将所有内容都保存在Makefile中)
[这个问题的逻辑相反:How to Use of Multiple condition in 'ifeq' statement ]
发布于 2011-10-05 11:40:19
您可以引入另一个变量。它不会合并这两个检查,但它至少避免了必须将主体放入两次:
do_it =
ifeq ($(GCC_MINOR), 4)
do_it = yes
endif
ifeq ($(GCC_MINOR), 5)
do_it = yes
endif
ifdef do_it
CFLAGS += -fno-strict-overflow
endif
发布于 2011-10-05 11:48:05
我不认为有一种简洁、明智的方法来做到这一点,但有冗长、明智的方法(如Foo Bah)和简洁、病态的方法,如
ifneq (,$(findstring $(GCC_MINOR),4-5))
CFLAGS += -fno-strict-overflow
endif
(如果字符串$(GCC_MINOR)出现在字符串4-5中,它将执行该命令)。
发布于 2016-09-29 08:03:57
这里有更灵活的变体:它使用外部shell,但允许检查任意条件:
ifeq ($(shell test ".$(GCC_MINOR)" = .4 -o \
".$(GCC_MINOR)" = .5 -o \
".$(TODAY)" = .Friday && printf "true"), true)
CFLAGS += -fno-strict-overflow
endif
https://stackoverflow.com/questions/7656425
复制相似问题