过滤makefile先决条件

时间:2016-04-25 14:00:35

标签: makefile gnu-make

给出Makefile先决条件

PY_FILES := $(shell find . -type f -name *.py)

my_target: $(PY_FILES)
  do_something $(PY_FILES)

是否可以在其子集上调用do_something,即排除与模式匹配的所有python文件,例如*/test/*

我的理解是$(filter-out pattern, text)可以做类似的事情,但模式必须是我想要排除的文件列表。

在这种情况下,我也可以find使用-not并将结果保存到我想避免的另一个先决条件 - 我想重用PY_FILES先决条件。< / p>

1 个答案:

答案 0 :(得分:0)

*/test/*样式模式与make内置匹配没有好的内置方法。模式匹配并不复杂。

您可以尝试这样的方法,但在find时分割文件可能会更好,最终会更有用。

define testfilter
    $(foreach f,$1,$(if $(findstring /test/,$f),,$f))
endef

my_target: $(PY_FILES)
        do_something $(call testfilter,$(PY_FILES))