【发布时间】:2016-08-18 23:24:53
【问题描述】:
给定一个 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 prereq。
【问题讨论】:
-
pattern必须是与您要排除的文件匹配的 pattern。不幸的是,使模式仅支持单个通配符元素,因此您无法轻松地将$(filter-out)匹配到*/test/*的模式。您可以忽略那些find的人,尽管如您所指。