Bạn có thể gọi cho họ shirley
nếu bạn thích; không phải của các nhãn bạn đề cập có bất kỳ ngữ nghĩa đặc biệt nào. Hành vi mặc định của make
là chạy mục tiêu đầu tiên trong Makefile
nếu bạn không chỉ định mục tiêu làm đối số dòng lệnh. Nếu bạn muốn ghi đè hành vi này, có mục tiêu đặc biệt là .DEFAULT:
.
Có một quy ước để có một mục tiêu có tên là all
xây dựng mọi thứ, nhưng đây chỉ là quy ước của con người, không phải là trường hợp đặc biệt hoặc yêu cầu xa như Hãy quan tâm.
Tương tự, có một quy ước (yếu) để gọi đích mặc định default
, nhưng tương tự, đây chỉ là nhãn người (và chồng chéo và có thể xung đột với quy ước all
).
Vì vậy, các Makefile sau thực hiện chính xác những điều tương tự:
.PHONY: shirley all default
default: hello
all: hello
shirley: hello
hello: hello.cpp
# (Make already knows how to build an executable out of a .cpp file)
Bạn có thể bỏ qua bất kỳ hoặc tất cả các mục tiêu giả mạo trên, và sự khác biệt duy nhất sẽ cho rằng con người sẽ không thể nói make shirley
khi chúng (hiệu quả) có nghĩa là make hello
.
Dòng dưới cùng: Xây dựng Makefile để make
thực hiện những gì người dùng cuối hợp lý mong đợi mà không đọc quá nhiều README
tệp hoặc kiểm tra Makefile
. Thường thì đó sẽ là make all
(và bạn có thể có một mục tiêu với tên này, chỉ để đáp ứng các quy ước của con người, ngay cả khi nó không phải là mặc định), nhưng điều này rõ ràng phụ thuộc vào dự án của bạn và mong đợi của người dùng.
Đừng gọi tôi là Shirley.
Chỉ định mục tiêu đặc biệt '.DEFAULT' là ** không ** cách ghi đè mục tiêu mặc định.Mục tiêu mặc định là quy tắc đầu tiên trong makefile không bắt đầu bằng '.' - trừ khi ghi đè bằng cách chỉ định biến đặc biệt '.DEFAULT_GOAL'. Để thông báo cho người đọc về một makefile rất dài, tốt nhất là chỉ định .DEFAULT_GOAL hoặc viết một quy tắc (thường là một quy tắc giả như 'default: all' không có recipe) rất sớm trong makefile. –
@DavidHammen Tôi đồng ý với kết luận cuối cùng của bạn. Tuy nhiên, tôi sẽ quan tâm '.DEFAULT_GOAL' hack chủ yếu là một cánh cửa bí truyền trở lại mà có lẽ nên tránh, và [hướng dẫn sử dụng] (https://www.gnu.org/software/make/manual/html_node/Special-Variables. html) ví dụ về cách sử dụng nó chắc chắn củng cố ấn tượng này. – tripleee