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

Dav*_*ogt 12 makefile gnu-make

我有一个具有以下结构的Makefile(工作示例).

.PHONY: image flashcard put-files

put-files:
    @echo "=== put-files"

image:
    @echo "=== image"

flashcard:
    @echo "=== flashcard"

all: put-files image flashcard
    @echo "Done"
Run Code Online (Sandbox Code Playgroud)

我希望简单make会构建所有三个目标,但事实并非如此:

% make
=== put-files
Run Code Online (Sandbox Code Playgroud)

但是如果我明确指定了目标,那么也会构建依赖项:

% make all
=== put-files
=== image
=== flashcard
Done
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

koa*_*oan 15

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

make all将建立目标all.如果您想all成为默认值,请将其移至列表顶部.

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