我有以下目录树
moving_files/
Makefile
source/
a
b
c
target/使用我的Makefile,我想cp source/到target/中的每个文件。陷阱:我希望以后能够将其他文件移动到source/,而不必编辑Makefile。为此目的,我写了如下:
FILES = $(filter-out Makefile, $(wildcard source/*) )
all: $(subst source,target,$(FILES))
$(subst source,target,$(FILES)): $(FILES)
cat $< >| $@而且效果很好。
但是,当我在之后再次执行touch source/d和make时,除了d、a、b和c之外,还有cat编辑。我要怎么做才能改变这种行为。
发布于 2016-01-05 04:30:34
$(subst source,target,$(FILES)): $(FILES)扩展到
target/a target/b target/c: source/a source/b source/c这意味着每个目标都依赖于source中的所有文件,可能不是您想要的。无论是静态还是隐式规则都可以解决这一问题,静态规则通常更好,因为它们更具体:
$(subst source,target,$(FILES)): target/%: source/%https://stackoverflow.com/questions/34603415
复制相似问题