过滤通配符的行为方式与预期不同

Filter wildcards not behaving the same way or as intended

我正在尝试让以下过滤语句正常工作,但是,它没有。 exportedLibaries 包含执行文件的相对路径(即 export/*/*/*/filename

dev := $(filter HelloWorld%, $(exportedLibraries))

我在我的单元测试中使用了类似的过滤器,并且效果很好(相对路径相同):

unitTests := $(filter %_Test, $(exportedUnitTests))

然而这有效...

dev := $(filter $(wildcard export/**/**/**/HelloWorld*), $(exportedLibraries))

我做错了什么?

在这种情况下,

$(notdir) 是您想要的:

exportedLibraries := export/foo/helloworld.lib export/bar/HelloWorld.lib export/baz/HelloWorldTwo.lib

dev := $(foreach lib,$(exportedLibraries),$(if $(filter HelloWorld%,$(notdir $(lib))),$(lib)))

$(info $(dev))

您可以 $(strip) $(foreach) 的结果以去除结果中多余的空格。