Hướng dẫn phong cách Makefile của Clark Grubb khuyến nghị rằng:
- Tất cả các mục tiêu giả mạo phải được khai báo bằng cách biến chúng thành các điều kiện tiên quyết của .PHONY.
- thêm từng mục tiêu giả mạo làm điều kiện tiên quyết của .PHONY ngay trước khi khai báo mục tiêu, thay vì liệt kê tất cả các mục tiêu giả mạo ở một nơi duy nhất.
- Không có mục tiêu tệp nào là điều kiện tiên quyết của .PHONY.
- mục tiêu giả mạo không nên là điều kiện tiên quyết của mục tiêu tập tin.
Ví dụ của bạn, điều này có nghĩa là:
.PHONY: all
all:
echo "Executing all ..."
.PHONY: of
of:
echo "Executing of ..."
.PHONY: my
my:
echo "Executing my ..."
.PHONY: rules
rules:
echo "Executing rules ..."
Nhiều PHONY
mục tiêu được cho phép; xem thêm câu hỏi Stack Overflow này: "Có thể có nhiều mục tiêu .PHONY trong tệp tạo gnu không?"
Ngoài ra, trong khi điều này không được đề cập trực tiếp trong câu hỏi của bạn, thì cần chú ý không có PHONY
mục tiêu có cùng tên của một tệp đầu vào hoặc tệp trung gian thực trong dự án của bạn. Ví dụ, nếu giả thuyết dự án của bạn có tệp mã nguồn có tên rules
(không có hậu tố), việc đưa chuỗi đó vào PHONY
mục tiêu có thể phá vỡ make
hành vi dự kiến .