如何在Makefile中使用多个条件过滤文件?

8

假设你想筛选出cpp文件,就像这样:

$(wildcard **/*.cpp)

但是您不想要包含单词foo的文件,也不想要名为bar.cpp的文件

如何使用filter-out处理多个条件?


1
想指出的是,如果你认为使用 ** 结构会导致 make 的 wildcard 函数像 zsh 一样递归搜索目录...那就错了。 - MadScientist
1个回答

8
这似乎可以正常工作。还能递归执行。
$(filter-out $(wildcard **/bar.cpp) $(wildcard **/*foo*), $(wildcard **/*.cpp))

请注意下面Etan提出的更简单的建议。我的只是为了完整起见。

3
不需要使用$(wildcard)来寻找bar.cpp,只需使用%/bar.cpp即可。 - Etan Reisner
即使它在子目录中? - Johnny Haddock
2
是的,即使有子目录也可以匹配。百分号(%)可以匹配任何内容。试一下就知道了。 - Etan Reisner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接