任何人都可以在下面一行中建议如何实现-
ifeq ($(findstring city, $(TARGET_PRODUCT)), city)
..
else ifeq ($(findstring man, $(TARGET_PRODUCT)), man)
..
else ifeq ($(findstring zone, $(TARGET_PRODUCT)), zone)
..
endif
这里的城市,人,区域不是完整的词,而是部分模式,例如ex,speed,Hitman,xzoneplace等。
我发现带有过滤器选项的单词匹配-
ifneq (,$(filter $(OS),Darwin FreeBSD NetBSD))
bar
endif
但是似乎不适合部分匹配
谢谢
不容易。您可以编写将执行此操作的递归函数,例如:
findany = $(if $1,$(or $(findstring $(firstword $1),$2),$(call findany,$(wordlist 2,$(words $1),$1),$2)))
ifneq (,$(call findany,city man zone,$(TARGET_PRODUCT)))
findany
函数如果没有匹配项,则返回空字符串(或者,如果有匹配项,则返回第一个匹配项。)>
GNUmake库gmtt具有函数glob-match
,它可能不是您想要的: