如何使用make的ifeq运算符执行逻辑OR ?
例如,我有(简化):
ifeq ($(GCC_MINOR), 4)
CFLAGS += -fno-strict-overflow
endif
ifeq ($(GCC_MINOR), 5)
CFLAGS += -fno-strict-overflow
endif
Run Code Online (Sandbox Code Playgroud)
但想巩固这些界限.
(是的,是的,autotools,配置等等;对于当前的情况太过苛刻,想在这里保留Makefile中的所有内容)
[与此问题逻辑相反:如何在'ifeq'语句中使用多个条件 ]
在我的Makefile中,我想检查以下复杂情况:
ifdef VAR1 || VAR2 || VAR3
action
endif
Run Code Online (Sandbox Code Playgroud)
但文档说不支持这样的语法.因此,我想到的唯一简单的解决方法是使用串联:
ifneq ($(VAR1)$(VAR2)$(VAR3),)
action
endif
Run Code Online (Sandbox Code Playgroud)
还有其他更正确的解决方案吗?
对于以下情况:
ifdef VAR1 && VAR2 && VAR3
action
endif
Run Code Online (Sandbox Code Playgroud)
一个人需要写
ifdef VAR1
ifdef VAR2
ifdef VAR3
action
endif
endif
endif
Run Code Online (Sandbox Code Playgroud)
这也很难看.还有更优雅的选择吗?
我想要多个 if 条件并想要组合。
ifeq ($(TAG1), on)
LD_FLAGS += -ltestlibrary
endif
ifeq ($(TAG2), on)
LD_FLAGS += -ltestlibrary
endif
Run Code Online (Sandbox Code Playgroud)
我想做一些事情,比如:
ifeq ($(TAG1) || $(TAG2), on)
LD_FLAGS += -ltestlibrary
endif
Run Code Online (Sandbox Code Playgroud)
我该怎么做?SO Makefile ifeq logical or or How to Use of Multiple condition in 'ifeq' 语句中的答案给出了其他方法。