क्लार्क ग्रब की मेफाइल शैली गाइड की सिफारिश करती है कि:
- सभी फ़ोनी लक्ष्यों को .PHONY के पूर्वापेक्षाएँ बनाकर घोषित किया जाना चाहिए।
- एक ही स्थान पर सभी फ़ॉनी लक्ष्यों को सूचीबद्ध करने के बजाय लक्ष्य घोषणा से तुरंत पहले .PHONY की शर्त के रूप में प्रत्येक फ़ॉनी लक्ष्य जोड़ें।
- कोई फ़ाइल लक्ष्य .PHONY के पूर्वापेक्षाएँ नहीं होनी चाहिए।
- फोनी लक्ष्य फ़ाइल लक्ष्यों के पूर्वापेक्षाएँ नहीं होनी चाहिए।
आपके उदाहरण के लिए, इसका मतलब होगा:
.PHONY: all
all:
echo "Executing all ..."
.PHONY: of
of:
echo "Executing of ..."
.PHONY: my
my:
echo "Executing my ..."
.PHONY: rules
rules:
echo "Executing rules ..."
एकाधिक PHONY
लक्ष्यों की अनुमति है; इस स्टैक ओवरफ्लो प्रश्न को भी देखें: "क्या ग्नू मेफाइल में कई .PHONY लक्ष्य रखना संभव है?"
इसके अलावा, जबकि यह आपके प्रश्न में सीधे उल्लेख नहीं किया गया है, ध्यान रखना चाहिए कि PHONY
आपके प्रोजेक्ट में वास्तविक इनपुट या मध्यवर्ती फ़ाइलों के समान नाम के साथ लक्ष्य न हो । उदाहरण के लिए, यदि आपके प्रोजेक्ट में काल्पनिक रूप से एक स्रोत कोड फ़ाइल है जिसका नाम rules
(बिना प्रत्यय के) है, तो PHONY
लक्ष्य में उस स्ट्रिंग का समावेश अपेक्षित make
व्यवहार को तोड़ सकता है।