【发布时间】:2022-11-04 00:54:48
【问题描述】:
我试图简单地复制使用 make 修改的文件。这是整个 Makefile:
FILES = www/foo.html www/bar.html www/zap.php
all: $(FILES)
$(FILES): src/$@
cp src/$@ $@
clean:
rm $(FILES)
修改文件src/www/bar.html后,make不会复制该文件:
$ make
make: Nothing to be done for 'all'.
$ make www/bar.html
make: 'www/bar.html' is up to date.
为什么 make 看不到先决条件已被修改并且需要复制文件?
如果我运行 make clean, make 它可以工作(复制所有文件)。
【问题讨论】:
-
$@、$<等自动变量只有值在食谱中.它们在先决条件列表中没有特殊价值。因此,src/$@扩展为仅src/作为先决条件,因为$@变量为空。
标签: makefile