使用多个通配符过滤

MvG*_*MvG 2 filtering glob makefile wildcard gnu-make

我已经git了一个项目,在其Makefile中的某个时刻,我正在过滤掉某个目录中的内容:

relevant = $(filter-out irrelevant/%,$^)
Run Code Online (Sandbox Code Playgroud)

现在我想在一个VPATH启用的环境中使用它.因此,我的依赖关系的路径$^可能不会再开始了irrelevant,而是类似../src/irrelevant或相似的东西.

有没有办法过滤掉任何包含 irrelevant任何位置的东西?即如下所示?

relevant = $(filter-out %irrelevant/%,$^)
Run Code Online (Sandbox Code Playgroud)

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

Mad*_*ist 5

尝试

relevant = $(foreach a,$^,$(if $(findstring irrelevant,$a),,$a))
Run Code Online (Sandbox Code Playgroud)