给出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>
答案 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))