2008-10-20 11 views
11

मैं एक छोटी परियोजना के लिए GNUMake सीखने की कोशिश कर रहा हूं जिस पर मैं काम कर रहा हूं। अब तक, यहां तक ​​कि "मूल" ट्यूटोरियल भी काफी मोटे लगते हैं और मुझे अभी तक मेकफ़ाइल सिंटैक्स का एहसास नहीं हुआ है।GNUMake सीखने के लिए संसाधन?

क्या किसी के पास GNUMake से परिचित होने के लिए एक पूर्ण शुरुआत के लिए कुछ अच्छे संसाधन हैं?

उत्तर

12

निश्चित गाइड है http://www.gnu.org/software/make/manual/make.html
एक ओ रेली पुस्तक "जीएनयू साथ प्रबंध परियोजनाओं बनाओ" जो अधिक व्याख्या है नहीं है। आप पहले के संस्करणों का भी उपयोग कर सकते हैं, वे विशेष रूप से GnuMake को कवर नहीं करते हैं लेकिन बहुत पतले हैं।

मेक डेवलपर्स के बीच एक गंदे रहस्य है - हम में से किसी को समझना है, हम बस किसी और से एक मेकअप स्क्रिप्ट उधार लेते हैं और इसे बदलने के। मुझे लगता है कि स्क्रैच से शायद एक ही स्क्रिप्ट लिखी गई थी (शायद टूल के निर्माता द्वारा)।

आप चींटी की तरह एक और अधिक आधुनिक निर्माण व्यवस्था करने के लिए ज्यादातर लोगों को या तो स्विच सरल उदाहरण से अधिक कार्य करती या पर्ल/पायथन/आदि में अपने स्वयं के रोल करने की जरूरत है।

+0

मैंने सुना था कि मेकफ़ाइल के लिए एक पारिवारिक पेड़ सुंदर व्यंजन दिखता है। : डी –

+0

मैंने कभी किसी के अपने पर्ल/पायथन/ect "रोलिंग" की झुंड नहीं ली है। जटिल या "सरल से अधिक" निर्माण परिदृश्य के लिए प्रणाली। वास्तव में पाइथन के स्कैन के जैसे उपकरणों को अपने चेहरे पर बहुत बड़े जटिल कोड बेस के साथ बनाते हैं। लेकिन मैं मानता हूं कि आप शायद अन्य लोगों की मेकअप स्क्रिप्ट "उधार" करके प्राप्त कर सकते हैं। – Tom

+0

@ टॉम - बनाने के लिए 'क्या बदल गया है/पुनर्निर्माण की जरूरत है' के लिए बहुत कुछ नहीं है, लेकिन अतिरिक्त उपकरण के लिए डीबी सेट अप करने के लिए और सीरियल नंबर जेनरेट करें और सीडी जलाएं –

0

एमजीबी: यह इससे भी बदतर है। मैंने एक बार स्क्रैच से एक जटिल मेक सिस्टम लिखा था (कुछ हज़ार फाइलें, पचास या सौ निर्देशिका, चार या पांच कंपाइलर्स और क्रॉस-संकलन लक्ष्य, 2 ओएस आदि)। मैं बैठ गया और gnu पहले अंदर और बाहर बाहर सीखा, सिस्टम डिजाइन किया, पहले प्रोटोटाइप के साथ खेला। हम सभी परिणाम से बहुत खुश थे।

लेकिन वह साल पहले था। आप जानते हैं कि मैं आज उन्हें कैसे लिखता हूं? वैसे ही आप वर्णन करते हैं। यह सिर्फ काफी हद तक पर्याप्त है और सिंटैक्स विवरण तब तक अस्पष्ट नहीं हैं जब तक आप इसे नियमित रूप से नियमित रूप से नहीं करते हैं, आप विवरण याद नहीं कर सकते हैं। गैर अंतर्ज्ञानी वाक्यविन्यास और कुछ quirky नियमों के साथ किसी भी अन्य भाषा की तरह, मुझे लगता है।

+0

चाहते हैं, हमने पाइथन में अपना स्वयं का सरल सिस्टेम छोड़ दिया और इसे विंडोज/लिनक्स/स्पार्क पर बनाना था और इसे समझने की कोशिश करने से आसान था। –

+0

मैंने इसे माना, लेकिन जब मैं इसके चारों ओर अपना सिर मिला तो इतना बुरा नहीं था। यह पूर्व पायथन और रूबी था; मुझे लगता है कि मैं जल्दी पेर्ल का इस्तेमाल कर सकता था, शायद। – simon

3

सबसे अधिक इस्तेमाल किया मेकअप की सुविधाओं एक जोड़े को सरल अवधारणाओं, लक्ष्य, निर्भरता और चर में बांटा जा सकता है।

लक्ष्य चीजें आप का निर्माण करना चाहते हैं, लेकिन आदेश (रों) लक्ष्य के नीचे संकलक आदेशों या स्क्रिप्ट हो सकता है। आम तौर पर प्रत्येक लक्ष्य आपके कोड में एक मॉड्यूल को संदर्भित करता है, लेकिन आप इन्हें अपने प्रोजेक्ट के अनुरूप बनाना चाहते हैं, लेकिन आप इन्हें दानेदार बना सकते हैं।

निर्भरता आपकी परियोजना में फ़ाइलें या अन्य लक्ष्य हैं। इसका सबसे अच्छा उदाहरण सी परियोजना के लिए है जहां आप ऑब्जेक्ट फ़ाइलों के समूह से बाइनरी बना रहे हैं। बाइनरी बनाने से पहले प्रत्येक ऑब्जेक्ट फ़ाइल को अस्तित्व में रखना होगा, इसलिए जब तक सभी निर्भरताओं को पूरा नहीं किया जाता है, तब तक अपने लक्ष्य को पार कर लेंगे, और उसके बाद समग्र लक्ष्य के लिए कमांड चलाएं।

चर हमेशा आवश्यक नहीं होते हैं, लेकिन कंपाइलर झंडे जैसी चीजों को संभालने के लिए बहुत आसान हैं। कैननिकल उदाहरण सीसी और सीसीएफएलजी हैं जो कंपाइलर को आपके i.e. gcc और flans जैसे -ansi -Wall -o2 का उपयोग करेंगे।

एक जोड़े को और अधिक सामान्य युक्तियाँ और चालें:

  • आदेश एक [टैब] चरित्र से रवाना किया जाना चाहिए, या वे निष्पादित नहीं किया जाएगा, यह सिर्फ मेकअप के एक पुराने अवशेष है, मैं डॉन याद नहीं है कि यह क्यों है।
  • सम्मेलन के द्वारा, आप डिफॉल्ट निर्दिष्ट करने के लिए सभी लक्ष्य शामिल करना चाहेंगे जो लक्ष्य डिफ़ॉल्ट होना चाहिए। यह उपयोगी होता है जब आपके पास जटिल मेकफ़ाइल होता है और एक विशेष लक्ष्य होता है जिसे आप हमेशा डिफ़ॉल्ट बनाना चाहते हैं।
  • आपका makefile makefile या Makefile बुलाया जाना चाहिए, लेकिन यदि आप इसे कुछ और कॉल करने के लिए, का उपयोग करना चाहते $ -f बनाने [makefilename]
  • हमेशा पूर्ण चर विस्तार वाक्य रचना यानी $ (चर) का उपयोग करें या नहीं हो सकता उत्पादन कर आदेश जो आप चाहते हैं।
  • मेक रिकर्सिवली काम कर सकता है, इसलिए यदि आपके पास प्रोजेक्ट के अंदर रहने वाली आपकी प्रोजेक्ट में उप-मॉड्यूल का समूह है, तो आप प्रत्येक को बनाने के लिए उप-निर्देशिका मेकफ़ाइल पर कॉल कर सकते हैं।
  • यदि आपके पास वास्तव में एक जटिल परियोजना है जिसमें इंस्टॉलेशन स्क्रिप्ट आदि की आवश्यकता है, तो आप शायद ऑटोटूल की जांच भी करना चाहेंगे जो आपके लिए मेकफ़ाइल उत्पन्न करता है और लाइब्रेरी अस्तित्व की जांच करने के लिए और अन्य पोर्टेबिलिटी समस्याओं के लिए चाल का एक गुच्छा करता है।
+0

कुछ भी ट्यूटोरियल-जैसे इसके साथ? मैं GNUMake की सामान्य अवधारणाओं को समझता हूं, लेकिन मेकफ़ाइल सिंटैक्स थोड़ा आर्केन है। –

+0

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

+0

नोट किया गया, जेफ के एचटीएमएल सैनिटाइज़र ने मेरी टैब टिप्पणी खाई। मैं उन सुधारों को –

2

मैं O'Reilly पुस्तक सुझाव के साथ सहमत हूं।

कुछ उपयोगी टिप्स, ट्रिक और अंतर्दृष्टि मेक नज़र में लिए Mr. Make articles

0

पर मैं जीएनयू जानकारी प्रणाली के महान प्रशंसक नहीं हूँ, लेकिन मैं जीएनयू जानकारी पृष्ठों बहुत उपयोगी हो सकते हैं मिल गया है। एक बार जब आप बहुत ही बुनियादी अवधारणाओं को जानते हैं और मोटे तौर पर किस प्रकार की चीजें उपलब्ध हैं, तो मुझे पता चला है कि जानकारी पृष्ठ प्रीबिल्ट फ़ंक्शंस जैसी जानकारी का संदर्भ देने का सबसे तेज़ तरीका है, उदाहरण के लिए।

(जीएनयू info कार्यक्रम को भूल जाओ, और बदले pinfo का उपयोग जैसे।)

2

"जीएनयू साथ प्रबंध परियोजनाओं बनाओ, 3 संस्करण" के तहत "GNU Free Documentation License" डाल दिया जाता है और कानूनी रूप से मुक्त करने के लिए ऑनलाइन पढ़ा जा सकता: link

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