试图在Makefile上进行条件编译。如果满足所有三个条件(又名匹配),则继续编译某些子目录,否则执行其他操作。
MATCH1 := $(if $(strip $(VAR1)),$(patsubst 6000,,$(VAR1)),NO)
MATCH2 := $(if $(strip $(VAR2)),$(patsubst cp,,$(VAR2)),NO)
MATCH3 := $(if $(strip $(VAR3)),$(patsubst 100g,,$(VAR3)),NO)
ifneq ($(and $(MATCH1)[,$(MATCH2)[,$(MATCH3)]])). <<< error here
do-something
else
do-something-else
endif
代码在上面提到的行中给我错误 “ Makefile:26:***条件语法无效。”
我在做什么错了?
答案 0 :(得分:0)
您误读了语法示例。在大多数技术手册中,字符[和]围绕可选内容:可以省略的部分。它们并不是要直接插入文本中。
您还需要比较两件事,在这里您只有一件事($(and ...)
函数)。
我也不知道您为什么要在最后加上句号。也许您的真实版本不存在。
您应该这样写:
ifneq (,$(and $(MATCH1),$(MATCH2),$(MATCH3)))
在开头请注意逗号:您正在将空字符串与$(and ..)
函数的结果进行比较(如果任何$(MATCHx)
变量为空,则该字符串为空。