在makefile中找到多个单词匹配

问题描述 投票:0回答:2

任何人都可以在下面一行中建议如何实现-

    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

但是似乎不适合部分匹配

谢谢

makefile
2个回答
0
投票

不容易。您可以编写将执行此操作的递归函数,例如:

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函数如果没有匹配项,则返回空字符串(或者,如果有匹配项,则返回第一个匹配项。)>


0
投票

GNUmake库gmtt具有函数glob-match,它可能不是您想要的:

© www.soinside.com 2019 - 2024. All rights reserved.