2011-07-28 60 views
9

我有一个具有以下结构的Makefile(工作示例)。“make”和“make all”有什么区别?

.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 

我在做什么错?

回答

11

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

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

要了解.PHONY做什么,看到http://www.gnu.org/s/hello/manual/make/Phony-Targets.html

+0

你说得对,我的问题是,我有点想通了默认的目标是通过选择的名称(“全”),而不是按位置。非常感谢! –

相关问题