"make"和"make all"有什么区别?



我有一个结构如下的Makefile(工作示例)。

.PHONY: image flashcard put-files
put-files:
    @echo "=== put-files"
image:
    @echo "=== image"
flashcard:
    @echo "=== flashcard"
all: put-files image flashcard
    @echo "Done"

我期望一个简单的make将构建所有三个目标,但事实并非如此:

% make
=== put-files

但是如果我显式地指定目标,依赖项也会被构建:

% make all
=== put-files
=== image
=== flashcard
Done

我做错了什么?

一个简单的make将构建列表中的第一个目标,即put-files

make all将构建目标all。如果您希望all为默认值,则将其移动到列表的顶部。

要了解.PHONY的作用,请参阅http://www.gnu.org/s/hello/manual/make/Phony-Targets.html

最新更新