2011-07-28 17 views
9

Tôi có một Makefile với cấu trúc sau (ví dụ làm việc).Sự khác nhau giữa "tạo" và "tạo tất cả" là gì?

.PHONY: image flashcard put-files 

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

image: 
    @echo "=== image" 

flashcard: 
    @echo "=== flashcard" 

all: put-files image flashcard 
    @echo "Done" 

Tôi hy vọng rằng một đơn giản make sẽ xây dựng tất cả ba mục tiêu, nhưng điều này không phải là như vậy:

% make 
=== put-files 

Nhưng nếu tôi chỉ định rõ ràng mục tiêu, sự phụ thuộc được xây dựng cũng như:

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

Tôi đang làm gì sai?

Trả lời

11

Một đơn giản make sẽ tạo mục tiêu đầu tiên trong danh sách, là put-files.

make all sẽ tạo mục tiêu all. Nếu bạn muốn all làm mặc định, hãy di chuyển nó lên đầu danh sách.

Để hiểu những gì các .PHONY làm, xem http://www.gnu.org/s/hello/manual/make/Phony-Targets.html

+0

Bạn nói đúng, vấn đề của tôi là tôi bằng cách nào đó đã tìm thấy mục tiêu mặc định được chọn theo tên ("tất cả"), thay vì theo vị trí. Cảm ơn rất nhiều! –

Các vấn đề liên quan