Makefile OR 条件

Ruc*_*pta 6 linux makefile

我想要多个 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' 语句中的答案给出了其他方法。

tim*_*kes 3

您不能使用逻辑 OR 运算符,根本就没有一个,因此必须使用另一种方法来实现它 - 就像您已经找到的帖子中建议的那样。我更喜欢的方式是使用过滤器,正如您提供的第一个链接中所建议的那样。

在你的情况下它看起来像这样

ifneq (,$(filter on,$(TAG1)$(TAG2)))
LD_FLAGS += -ltestlibrary
endif    
Run Code Online (Sandbox Code Playgroud)

这会连接两个标签,过滤它们的“on”,并将它们与空字符串进行比较,因此如果任一标签打开,则比较将为 false 并且代码LD_FLAGS += -ltestlibrary将运行。