Makefile 如果其他目录中的文件已更改,则更新文件(覆盖)文件。简单生成文件
我有一个文件Makefile 如果其他目录中的文件已更改,则更新文件(覆盖)文件。简单生成文件,makefile,gnu-make,Makefile,Gnu Make,我有一个文件dir/a.txt,偶尔会更新。当我运行make时,我需要更新当前目录a.txt中的一个文件,如果后者已更改,则该文件将被dir/a.txt覆盖。我试过这个 all: a.txt cp dir/a.txt a.txt a.txt: dir/a.txt 但无论是否更改,它都将始终更新a.txt。在这个简单的例子中,如果使用新的修改时间戳更新文件,则无关紧要,但我想学习如何使用make仅在dir/a.txt发生更改时更新文件。您可以这样做: .PHONY: all all:
dir/a.txt
,偶尔会更新。当我运行make
时,我需要更新当前目录a.txt
中的一个文件,如果后者已更改,则该文件将被dir/a.txt
覆盖。我试过这个
all: a.txt
cp dir/a.txt a.txt
a.txt: dir/a.txt
但无论是否更改,它都将始终更新a.txt
。在这个简单的例子中,如果使用新的修改时间戳更新文件,则无关紧要,但我想学习如何使用make
仅在dir/a.txt
发生更改时更新文件。您可以这样做:
.PHONY: all
all: a.txt
a.txt: dir/a.txt
cp $< $@
对于永远不会创建的目标,all
,因此配方
将永远被执行。这个目标实际上是,,
(顺便说一句)你应该告诉make
它是:
.PHONY: all
.PHONY: all