2015-09-09 14 views
5

में लक्ष्य से पहले एक मेक फ़ाइल में मुझे नीचे कोड कोड स्निप मिला। Create_file और run_debug के बीच कोई अंतर है? मेरा मतलब है। (dot) create_file PHONY जैसी किसी भी कार्यक्षमता को पेश करने से पहले?के लिए क्या अर्थ है। (डॉट) मेकफ़ाइल

all:debug run_debug 
setup: .create_file 

.create_file: 
     cd /home/user1 
     touch file.txt 

run_debug: 
     @echo Building debug 
     cd /home/user1/debug 
+1

मुझे पता है कि एक अंतर है: एक लक्ष्य के साथ शुरू होने वाले लक्ष्य नामों को डिफ़ॉल्ट लक्ष्य की पहचान करने पर विचार नहीं किया जाता है (जब आप केवल 'मेक' कहते हैं तो ऐसा किया जाता है), जब तक कि उनमें स्लेश भी न हों। –

उत्तर

7

जहाँ तक मुझे पता के रूप में यह केवल एक ही उद्देश्य है (और यह makefile उस उद्देश्य makefile निर्माण से नहीं रही है)।

How make Processes a Makefile से

:

डिफ़ॉल्ट रूप से, पहले लक्ष्य के साथ शुरू होता है make (नहीं लक्ष्यों को जिनके नाम ‘.’ के साथ शुरू)। इसे डिफ़ॉल्ट लक्ष्य कहा जाता है।

तो एक अग्रणी . का अर्थ है कि उस लक्ष्य को वैध डिफ़ॉल्ट लक्ष्य के रूप में नहीं माना जाएगा।

लेकिन, लिखित के रूप में, all लक्ष्य इस मेकफ़ाइल में पहला लक्ष्य है, इसलिए यह डिफ़ॉल्ट लक्ष्य होगा, इसलिए यहां प्रमुख बिंदु वास्तव में कुछ भी नहीं करता है।

कि setup, run_debug और .create_file लक्ष्यों के सभी तीन कहा .PHONY के रूप में चिह्नित किया जाना चाहिए और लिखा जा रहा/आदि का ज्यादा बेहतर तरीके हो सकते हैं।

संबंधित मुद्दे