我希望有多个if条件并希望合并。
ifeq ($(TAG1), on)
LD_FLAGS += -ltestlibrary
endif
ifeq ($(TAG2), on)
LD_FLAGS += -ltestlibrary
endif
我想做一些事情:
ifeq ($(TAG1) || $(TAG2), on)
LD_FLAGS += -ltestlibrary
endif
我该怎么办? SO Makefile ifeq logical or或How to Use of Multiple condition in 'ifeq' statement中的答案提供了另外的做法。
答案 0 :(得分:1)
你不能使用逻辑OR运算符simply isnt one,因此必须使用另一种方法 - 就像你已经找到的帖子中建议的那样。我喜欢这样做的方式是使用过滤器,如您提供的first link中所述。
在你的情况下,它看起来像这样
ifneq (,$(filter on,$(TAG1)$(TAG2)))
LD_FLAGS += -ltestlibrary
endif
这会连接两个标记,将它们过滤为“on”,并将它们与空字符串进行比较,因此如果任一标记处于启用状态,则比较将为false,并且LD_FLAGS += -ltestlibrary
代码将运行。
答案 1 :(得分:1)
可以在MakeFile中将过滤器用于OR运算符。
对于您的情况,情况将是:
ifneq ($(filter on,$(TAG1) $(TAG2)),)
LD_FLAGS += -ltestlibrary
endif
Please refer this link for GNU make functions for transforming text
答案 2 :(得分:0)
查看我的答案,here
如果要检查x = 4或x = 6
ifeq ($(x),$(filter $(x),4 6))
x is either 4 or 6. do whatever you like with it
else
x is neither 4 nor 6
endif
答案 3 :(得分:0)
请注意,ifeq ($(x),$(filter $(x),4 6))
将捕获根本没有定义 x 的情况。
如果你想抓住 x==4 || x==6
这会做的伎俩:
ifneq ($(filter $(GCC_MINOR),4 6),)
# do stuff
endif