2010-04-18 17 views
5

मैं विकिपीडिया पर "बनाओ" के बारे में जर्मन लेख पढ़ सकते हैं और पाया निम्नलिखित 2 लाइनों:Makefile नियम

.c.o: 
    $(CC) $(CFLAGS) -c -o [email protected] $< 

क्यों निर्भरता अभिव्यक्ति बाहर छोड़ दिया जाता है और यही कारण है कि लक्ष्य एक डबल फाइल एक्सटेंशन का उपयोग करता है ?

उत्तर

5

यह वास्तव में एक suffix rule को परिभाषित करने के लिए किया जाता है Suffix Rules in the make manual देखें ... यह एक फ़ाइल एक इसी "ग" में समाप्त होने वाले फ़ाइल है, जो बताता है कि अनुमान लगाने के लिए बनाने से "ओ" में समाप्त होने वाले निर्माण करने के लिए कैसे परिभाषित करने है कि " फ़ाइल नाम .c", यदि यह मौजूद है, तो इस तरह के किसी भी फ़ाइल नाम के लिए " फ़ाइल नाम .o" के लिए निर्भरता है, और " फ़ाइल नाम .o" फ़ाइल को * .c निर्भरता से बनाया जा सकता है प्रदान किया गया नियम।

मुझे यह इंगित करना चाहिए कि यह लाइन पूरी तरह से अनावश्यक है और वास्तव में, मेकफ़ाइल में कुछ भी नहीं डालना चाहिए, क्योंकि मेक पहले से ही निर्भरता को कम करने में सक्षम है। आपको मेरे Makefile tutorial में दिलचस्पी हो सकती है क्योंकि यह कुछ चीजों में काफी कुछ विस्तार से चल रहा है, मेकिंग करने में सक्षम है।

+0

धन्यवाद। मैंने उस पोस्ट को "उत्तर" के रूप में स्वीकार कर लिया क्योंकि यह दूसरे की तुलना में अधिक सटीक है। मैं भी अपने cmake ट्यूटोरियल पर skimmed। दरअसल मुझे मेकफ़ाइल एटीएम का सामना करना पड़ता है, लेकिन मैं गर्मियों में उस ट्यूटोरियल को पढ़ूंगा;) –

+0

@ माइक, मेरा ट्यूटोरियल एक मेकफ़ाइल ट्यूटोरियल है, न कि एक सीएमके ट्यूटोरियल। मेरा मानना ​​है कि आप उलझन में हैं। मेरा पहला पैराग्राफ चेतावनी दे रहा था कि मेक की तुलना में सीएमके का उपयोग करना बेहतर है, लेकिन फिर नियमित मेक सिखाने के लिए चला जाता है। सीएमके मेक से बिल्कुल अलग है, और उनका वाक्यविन्यास समान रूप से कुछ भी नहीं दिखता है। –

+0

ओह, मैं देखता हूँ! मैंने पहले अनुच्छेद से आगे नहीं पढ़ा और महत्वपूर्ण भागों को याद किया। एक बहुत विस्तृत ट्यूटोरियल, मुझे यह पसंद है! –

5

जिसे 'प्रत्यय नियम' कहा जाता है, और इसका उपयोग पहले प्रत्यय के साथ एक स्रोत से दूसरे प्रत्यय के साथ एक लक्ष्य बनाने के लिए किया जाता है, जब तक प्रत्यय बनाने के लिए जाना जाता है। एक अधिक विस्तृत विवरण

+0

जैसा कि अन्य पदों के ऊपर कहा गया है, अधिक जानकारी है। लेकिन आपका जवाब भी उचित है! –

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