“make”和“make all”有什么区别?

时间:2011-07-28 08:44:45

标签: 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"

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

% make
=== put-files

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:14)

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

make all将构建目标all。如果您希望all成为默认值,请将其移至列表顶部。

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

相关问题