使用多个通配符过滤
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))
我有一个 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))