使用多个通配符过滤

Filtering using multiple wildcards

我有一个 git 项目,在它的 Makefile 中的某个时刻,我从某个目录中过滤掉内容:

relevant = $(filter-out irrelevant/%,$^)

现在我想在支持 VPATH 的环境中使用它。所以我在 $^ 中的依赖项的路径可能不再以 irrelevant 开头,而是像 ../src/irrelevant 或类似的东西。

有没有办法在任何位置过滤掉包含 irrelevant的任何内容? IE。像下面这样的东西?

relevant = $(filter-out %irrelevant/%,$^)

这不起作用,因为显然 filter-out 的模式只能包含一个 % 通配符。我知道我可以通过 shell 调用、grep 或其他方式实现这一点,但我希望在 Makefile 中有一些功能组合。

尝试

relevant = $(foreach a,$^,$(if $(findstring irrelevant,$a),,$a))