使用多个通配符过滤

时间:2015-02-16 11:51:22

标签: makefile filtering wildcard gnu-make glob

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

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

现在我想在启用VPATH的环境中使用它。因此,$^中我的依赖关系的路径可能不再以irrelevant开头,而是以../src/irrelevant或类似的方式开头。

有没有办法在任何位置过滤掉包含 irrelevant的任何内容?即类似下面的东西?

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

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

1 个答案:

答案 0 :(得分:5)

尝试

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