ऑटोटूलस, सीमेक और स्कैन के बीच अंतर क्या हैं?


259

ऑटोटूलस, सीमेक और स्कैन के बीच अंतर क्या हैं?


इस विषय पर पहले से ही Scons wiki में चर्चा की गई है । मेरा सुझाव है कि आप निम्नलिखित लिंक पर जाएँ: 1. scons.org/wiki/SconsVsOtherBuildTools क्या आपने उबंटू फोरम में बहुत समान चर्चा सूत्र का दौरा किया है ?
भद्रा

आप इस pdf www-alt.gsi.de/documents/DOC-2007-Sep-17-1.pdf को चेक कर सकते हैं ; इसमें पेशेवरों और विपक्षों और प्रत्येक उपकरण के बारे में कुछ विवरण हैं।
एडम

जवाबों:


190

सच में, ऑटोटूलस 'केवल वास्तविक' बचत अनुग्रह 'है कि यह सभी जीएनयू परियोजनाओं का बड़े पैमाने पर उपयोग कर रहा है।

ऑटोटूलस के मुद्दे:

  • सच में ARCANE m4 मैक्रो सिंटैक्स क्रिया के साथ संयुक्त है, "संगतता" के लिए परीक्षणों के लिए खोल खोल स्क्रिप्टिंग, आदि।
  • यदि आप ध्यान नहीं दे रहे हैं, तो आप क्रॉस-संकलन की क्षमता को गड़बड़ कर देंगे (यह स्पष्ट रूप से ध्यान दिया जाना चाहिए कि नोकिया स्क्रैचबॉक्स / स्क्रैचबॉक्स 2 के साथ आया है, अत्यधिक टूटी हुई ऑटोटूलस मैमो / मीगो के लिए सेटअप का निर्माण करता है।) आप, किसी के लिए भी। कारण, आपके परीक्षणों में स्थिर, स्थिर रास्ते हैं, आप क्रॉस-संकलन समर्थन को तोड़ने जा रहे हैं क्योंकि यह आपके sysroot विनिर्देश का सम्मान नहीं करेगा और यह आपके मेजबान सिस्टम से सामान खींच लेगा। यदि आप क्रॉस-कंपाइल सपोर्ट को तोड़ते हैं, तो यह आपके कोड को OpenEmbedded जैसी चीज़ों के लिए अनुपयोगी बनाता है और लक्ष्य के बजाय क्रॉस-कंपाइलर पर अपनी रिलीज़ बनाने की कोशिश कर रहे वितरण के लिए इसे "मज़ेदार" बनाता है।
  • प्राचीन, टूटे हुए कंपाइलरों के साथ समस्याओं के लिए एक बड़ी मात्रा में परीक्षण करता है जो NOBODY वर्तमान में इस दिन और उम्र में बहुत अधिक उत्पादन के साथ उपयोग करता है। जब तक आप सोलारिस, AIX, या इस तरह के प्राचीन संस्करण पर glibc, libstdc ++, या GCC जैसी किसी चीज का निर्माण नहीं कर रहे हैं, परीक्षण समय की बर्बादी है और कई चीजों के लिए संभावित स्रोत हैं, जैसे कि ऊपर दी गई चीजें।
  • विंडोज सिस्टम के लिए प्रयोग करने योग्य कोड बनाने के लिए ऑटोटूलस सेटअप प्राप्त करना बहुत दर्दनाक अनुभव है। (जब मैं विंडोज के लिए बहुत कम उपयोग करता हूं, यह एक गंभीर चिंता का विषय है यदि आप purportedly क्रॉस-प्लेटफॉर्म कोड विकसित कर रहे हैं।)
  • जब यह टूट जाता है, तो आप खर्च करने के लिए जा रहे हैं घंटे अपने पूंछ बातें जिसे लिखा है कि पटकथा अपने निर्माण सुलझाने के लिए गलत सुलझाने के लिए कोशिश कर रहा है का पीछा करते हुए (या, बल्कि (वास्तव में, यह मैं क्या करने की कोशिश कर रहा हूँ है, ऑटोटूलस को पूरी तरह से चीर दें- मुझे संदेह है कि इस महीने के बाकी समय में गड़बड़ करने के लिए पर्याप्त समय है ...) अभी काम कर रहा हूं क्योंकि मैं इसे टाइप कर रहा हूं। अपाचे थ्रिफ्ट में उन ब्रोकन बिल्ड सिस्टम में से एक है जो पार नहीं करेगा। -compile।)
  • "सामान्य" उपयोगकर्ता वास्तव में सिर्फ करने के लिए नहीं जा रहे हैं "./configure; बनाओ" - कई चीजों के लिए, वे किसी व्यक्ति द्वारा प्रदान किए गए पैकेज को खींचने जा रहे हैं, जैसे कि पीपीए से बाहर, या उनके वितरण विक्रेता। "सामान्य" उपयोगकर्ता देव नहीं हैं और कई मामलों में टारबॉल को नहीं पकड़ रहे हैं। यह है कि वहाँ होने जा रहा है कि अनुमान के लिए हर किसी के हिस्से पर snobbery है। टारबॉल के लिए विशिष्ट उपयोगकर्ता काम करने वाले देवता हैं, इसलिए यदि यह वहां है तो वे टूटे हुए के साथ स्लैम करने जा रहे हैं।

यह काम करता है ... अधिकांश समय ... आप सभी ऑटोटूल के बारे में कह सकते हैं। यह एक ऐसी प्रणाली है जो कई समस्याओं को हल करती है जो केवल GNU प्रोजेक्ट की चिंता करती है ... उनके आधार, कोर टूलकिन कोड के लिए। (संपादित करें (०५/२४/२०१४): यह ध्यान दिया जाना चाहिए कि इस प्रकार की चिंता के बारे में चिंता करने के लिए एक संभावित BAD चीज है- इस सोच से उपजी हार्दिक और सही, आधुनिक प्रणालियों के साथ, आप वास्तव मेंऑटोटूलस के लिए जो कुछ भी सही है, उसके साथ कोई व्यवसाय नहीं है। GNU को शायद कोडबेस का एक क्रिप्ट रिमूव करने की जरूरत है, जो हर्टबल के साथ हुआ है) के प्रकाश में) आप इसे अपने प्रोजेक्ट को करने के लिए उपयोग कर सकते हैं और यह एक छोटे प्रोजेक्ट के लिए अच्छी तरह से काम कर सकता है, जिसे आप लिनक्स या इसके अलावा कहीं भी काम करने की उम्मीद नहीं करते हैं। GNU टूलकिन स्पष्ट रूप से सही ढंग से काम कर रहा है। बयान है कि यह "लिनक्स के साथ अच्छी तरह से एकीकृत करता है" काफी बोल्ड स्टेटमेंट है और काफी गलत है । यह जीएनयू टूलूसाइट के साथ काफी अच्छी तरह से एकीकृत करता है और समस्याओं को हल करता है जो आईटी के पास इसके लक्ष्य हैं।

यह कहना नहीं है कि यहां थ्रेड में चर्चा किए गए अन्य विकल्पों के साथ कोई समस्या नहीं है।

SCON मेक / GMake / etc के प्रतिस्थापन का अधिक है। और बहुत अच्छा लग रहा है, हालांकि सभी चीजें मानी जाती हैं ...

  • यह अभी भी वास्तव में एक POSIX केवल उपकरण के अधिक है। आप शायद ऑटोटूलस की तुलना में इसके साथ विंडोज सामान बनाने के लिए मिनगॉव को अधिक आसानी से प्राप्त कर सकते हैं, लेकिन यह अभी भी पोसिक्स सामान करने के लिए अधिक सक्षम है और इसका उपयोग करने के लिए आपको पायथन और स्कोनस स्थापित करने की आवश्यकता होगी ।
  • जब तक आप स्क्रैचबॉक्स 2 जैसी किसी चीज़ का उपयोग नहीं करते हैं, तब तक यह क्रॉस-संकलन करने में समस्याएँ हैं।
  • मोटे तौर पर धीमी और सीएमके की तुलना में कम स्थिर है। वे आधे-अधूरे मन से आते हैं (SCOS की तुलना में POSIX पक्ष को बनाने के लिए / gmake की आवश्यकता है ...) CMake के लिए नकारात्मक। (एक अलग रूप में रूप में, आप की आवश्यकता होगी, कर रहे हैं कि अन्य समाधान पर ज्यादा तानाना, आप अपने आप पूछ किया जाना चाहिए कि क्या आपके परियोजना भी जटिल है ...)

इस धागे में CMake के लिए दिए गए उदाहरण थोड़े संगीन हैं।

तथापि...

  • आपको एक नई भाषा सीखने की आवश्यकता होगी।
  • यदि आप मेक, स्कैन्स, या ऑटोटूलस का उपयोग करते हैं तो काउंटर-सहज ज्ञान युक्त चीजें हैं।
  • आपको उस सिस्टम पर CMake इंस्टॉल करना होगा, जिसके लिए आप निर्माण कर रहे हैं।
  • यदि आपको इसके लिए पूर्व-निर्मित बायनेरिज़ नहीं हैं, तो आपको एक ठोस C ++ कंपाइलर की आवश्यकता होगी।

सही मायने में, आपके लक्ष्यों को आप यहां क्या चुनते हैं, यह तय करना चाहिए।

  • क्या आपको वैध वर्किंग बाइनरी का निर्माण करने के लिए टूटे हुए टूलचिन के बहुत से निपटने की आवश्यकता है ? यदि हाँ, तो आप ऑटोटूलस पर विचार करना चाह सकते हैं, ऊपर बताई गई कमियों से अवगत होना। सीएमके इस के साथ सामना कर सकता है, लेकिन यह ऑटोटूलस की तुलना में इसके साथ कम चिंता करता है। इसके बारे में चिंता करने के लिए स्कैन्स को बढ़ाया जा सकता है, लेकिन यह एक आउट-ऑफ-द-बॉक्स उत्तर नहीं है।
  • क्या आपको विंडोज लक्ष्य के बारे में चिंता करने की आवश्यकता है? यदि हां, तो ऑटोटूलस को वास्तव में चलने से बाहर होना चाहिए। यदि हां, तो SCons एक अच्छा विकल्प हो सकता है / नहीं। यदि हां, तो CMake एक ठोस विकल्प है।
  • आप क्रॉस-संकलन के बारे में चिंता करने की जरूरत (यूनिवर्सल क्षुधा / पुस्तकालयों, Google Protobufs, अपाचे बचत, आदि जैसी चीजों है चाहिए इस बारे में परवाह ...)? यदि ऐसा है, तो Autotools हो सकता हैआपके लिए इतने लंबे समय तक काम करना जब तक आपको विंडोज के बारे में चिंता करने की ज़रूरत नहीं है, लेकिन आप अपने कॉन्फ़िगरेशन सिस्टम को बनाए रखने में बहुत समय बिताने जा रहे हैं क्योंकि चीजें आप पर बदलती हैं। जब तक आप स्क्रैचबॉक्स 2 का उपयोग नहीं कर रहे हों, तब तक स्कैन्स लगभग एक नो-गो सही होता है- यह वास्तव में क्रॉस-संकलन पर हैंडल नहीं करता है और आपको उस एक्स्टेंसिबिलिटी का उपयोग करने और इसे उसी तरीके से बनाए रखने की आवश्यकता होती है, जैसे आप स्वचालित के साथ होंगे। यदि हां, तो आप सीएमके पर विचार कर सकते हैं क्योंकि यह सैंडबॉक्स से बाहर निकलने के बारे में कई चिंताओं के बिना क्रॉस-संकलन का समर्थन करता है और स्क्रैचबॉक्स 2 जैसी चीज़ के साथ / बिना काम करेगा और ओपनइंबेडेड जैसी चीजों के साथ अच्छी तरह से एकीकृत करता है ।

एक कारण कई है, कई परियोजनाएं क्यूमेक, ऑटोटूलस, आदि को खोद रही हैं और सीएमके तक जा रही हैं। अब तक, मैं एक सीएमके आधारित परियोजना को साफ-साफ उम्मीद कर सकता हूं कि या तो क्रॉस-कंपाइल स्थिति में या विजुअलस्टडियो सेटअप पर ड्रॉप किया जाए या केवल थोड़ी मात्रा में सफाई की आवश्यकता है क्योंकि प्रोजेक्ट विंडोज-ओनली या ओएसएक्स-ओनली पार्ट्स के लिए जिम्मेदार नहीं था। कोडबेस के लिए। मैं वास्तव में एक SCons की है कि बाहर स्थित परियोजना उम्मीद नहीं कर सकते और मैं पूरी तरह से उम्मीद 1/3 या अधिक Autotools परियोजनाओं मिल गया है करने के लिए कुछ गलत है कि precludes यह मेजबान एक या एक Scratchbox2 एक निर्माण को छोड़कर किसी भी संदर्भ पर सही का निर्माण।


12
हार्टलेड का उल्लेख करने वाला खंड इस कुंठित शेख़ी से अलग होता है। समस्या यह थी कि OpenSSL टूटे हुए मॉलोक का पता लगाने के लिए एक विन्यासकर्ता प्रकार के पैकेज का उपयोग नहीं कर रहा है, लेकिन सिस्टम पुस्तकालयों को फिर से लागू कर रहा है और उन पुस्तकालयों का उत्पादन करने वाले प्लेटफ़ॉर्म डेवलपर्स को हरा रहा है जो बहुत जल्द खामियों का पता लगा लेते थे। कार्यक्रमों को पोर्ट करने का एक कारण यह है कि वे उच्च गुणवत्ता वाले हो जाते हैं क्योंकि वे उन छोटी धारणाओं पर कम निर्भर होते हैं जिन्हें आप महसूस नहीं करते हैं कि आप क्या कर रहे हैं
Rob11311

9
बात यह है कि यह उससे बिल्कुल अलग नहीं है। ऑटोटूलस के साथ, आप इस तरह की चीजों के लिए क्षतिपूर्ति करने के बारे में चिंता कर रहे हैं- उन पुन: क्रियान्वयन उसी सोच का एक विस्तार है। इसे अगले स्तर तक ले जाना जैसा कि यह था। आपको यह देखना चाहिए कि उस पृष्ठभूमि से ... किस बिंदु पर वह इससे बिल्कुल अलग नहीं है। आपने अपने तर्क में मूल कारण पर उंगली नहीं उठाई- बस क्या हुआ। मैं सटीक थिंकिंग को छांट रहा हूं जो इसे शेलशॉक और कुछ अन्य लोगों के साथ लाया। यदि यह टूट गया है, तो आपको इसे ठीक करना चाहिए। यदि आप नहीं कर सकते हैं - तो आपको पूछना चाहिए कि इसे क्यों जारी रखना चाहिए।
Svartalf

5
मुझे संदेह नहीं है कि ऑटोटूलस और स्कोनस चूसते हैं, लेकिन यह उत्तर सीएमके (मेरी पसंदीदा बिल्ड सिस्टम, केवल बिल्ड सिस्टम की बहुत उदास स्थिति के कारण) को ध्यान में रखते हुए एक खराब काम करता है। मूल रूप से, सीएमके कुछ कोर अमूर्त के बजाय व्यक्तिगत किनारे के मामलों के लिए अंतर्निहित समर्थन के साथ असंगतता का एक भग्न है जो अधिकांश चीजों को संभालता है। यह निश्चित रूप से डक्ट टेप और प्रोग्रामिंग का वायरिंग वायर है। मुझे यकीन है कि मैं कुछ गलत कर रहा हूं, लेकिन यह विजुअलस्टैडियो का समर्थन नहीं करता है जब तक कि आप प्रति CMKLists.txt में एक वीएस प्रोजेक्ट नहीं पाते हैं (मैं एक वीएस उपयोगकर्ता नहीं हूं, लेकिन मेरे Winfriends मुझे बताएं कि यह बुरा है)।
वेबर 2

5
अन्य नफरत वाले प्रोग्रामिंग टूल्स के विपरीत , "सीमेक, द अच्छे पार्ट्स" नामक एक पुस्तक बनाने के लिए पर्याप्त सामग्री नहीं है (शायद एक पैम्फलेट या एक ब्लॉग पोस्ट), और यह PHP की तुलना में खराब डिजाइन का एक फ्रैक्टल अधिक है
weberc2

2
@JAB मुझे VS उपयोगकर्ताओं द्वारा बताया गया है कि यह मुहावरेदार नहीं है। वास्तव में, सीएमके को हमारी परियोजना के लिए बिल्ड सिस्टम के रूप में प्रतिस्थापित किया गया था क्योंकि कोई भी यह पता नहीं लगा सकता था कि "मुहावरेदार" वीएसडी फ़ाइलों का उत्पादन कैसे किया जाए।
वेबर 2

73

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

अधिकांश उपयोगकर्ताओं को अपने बॉक्स पर ऑटोटूल स्थापित करने की आवश्यकता नहीं है। ऐतिहासिक रूप से, बहुत भ्रम पैदा हो गया है क्योंकि कई डेवलपर्स विकृत टारबॉल वितरित करते हैं जो उपयोगकर्ता को कॉन्फ़िगर स्क्रिप्ट को पुन: उत्पन्न करने के लिए ऑटोकॉन्फ़ चलाने के लिए मजबूर करते हैं, और यह एक पैकेजिंग त्रुटि है। अधिक भ्रम इस तथ्य के कारण हुआ है कि अधिकांश प्रमुख लिनक्स वितरण ऑटोटूल के कई संस्करणों को स्थापित करते हैं, जब उन्हें डिफ़ॉल्ट रूप से उनमें से कोई भी स्थापित नहीं करना चाहिए। इससे भी अधिक भ्रम की स्थिति डेवलपर्स द्वारा एक संस्करण नियंत्रण प्रणाली (जैसे cvs, git, svn) का उपयोग करके अपने सॉफ़्टवेयर को वितरित करने के बजाय टारबॉल बनाने के प्रयास के कारण होती है।


5
सच है, हालांकि आप इसे ध्वनि बनाते हैं जैसे कि सॉफ़्टवेयर को वितरित करने के लिए वीसीएस का उपयोग करना बुरा है। यदि एक चेकआउट या क्लोन की सामग्री टारबॉल की सामग्री के समान है, तो आप टारबॉल की सिफारिश क्यों करेंगे?
d -_- b

5
@ मैं आपके सवाल को नहीं समझता। मैं जिन परियोजनाओं पर काम करता हूं उनमें से सभी एक टारबॉल का उत्पादन करती हैं जो वीसीएस चेकआउट से अलग है। विश्वसनीय वितरण के साथ दो अलग रखने में मदद करता है।
विलियम परसेल

13
यह सच है कि बहुत सी परियोजनाएं लोगों को नवीनतम रिलीज़ प्राप्त करने के लिए वीसीएस का उपयोग करने के लिए कहती हैं, लेकिन यह केवल डेवलपर्स के लिए उपयुक्त है। दुर्भाग्य से, कई उपयोगकर्ता रिलीज़ टारबॉल और वीसीएस के बीच अंतर को समझने में विफल रहते हैं। VCS से निर्माण करने का प्रयास अधिक निर्भरताएँ लगाता है। उपयोगकर्ता को सही ऑटोटूल संयोजन की आवश्यकता asciidocया help2manया doxygen, महत्वपूर्ण रूप से हो सकती है । यह ऑटोटूलस के लिए एक बहुत बड़ी विपणन समस्या रही है। उपयोगकर्ता गलत तरीके से सोचते हैं कि उन्हें ऑटोकॉन्फ़ स्थापित करने की आवश्यकता है क्योंकि वे टारबॉल और वीसीएस के बीच अंतर को नहीं समझते हैं।
विलियम पर्ससेल

3
कोई परियोजना Cmake के आउटपुट, प्रोजेक्ट फ़ाइलों और सामान्य प्लेटफ़ॉर्म के लिए Makefiles को वितरित क्यों नहीं कर सकती है)) Win, Linux और MacOSX? यह lex / yacc टूल के समान स्थिति के समान प्रतीत होता है, आप जीनरेटेड C कोड को शामिल करते हैं ताकि इसे बिना टूल के प्लेटफॉर्म पर बनाया जा सके
Rob11311

3
जबकि मुझे लगता है कि इस चर्चा में उल्लिखित बिंदु सही हैं, मुझे विश्वास है कि यह चर्चा इस बिंदु को याद कर रही है। उपयोगकर्ता को अन्य चीजों के पूरे झुंड को स्थापित करने की आवश्यकता है और सेमीक को स्थापित करने के लिए अतिरिक्त आवश्यकता है या नहीं, यह एक बड़ा मुद्दा नहीं होना चाहिए। मैं पुस्तकालयों के बारे में अधिक चिंता करूँगा, संकलक उपकरण श्रृंखला, और अन्य उपकरण जो सॉफ्टवेयर बनाने के लिए आवश्यक हैं।
18ox में lanoxx

24

यह GNU कोडिंग मानकों के बारे में नहीं है।

ऑटोटूलस के वर्तमान लाभ - विशेष रूप से स्वचालित के साथ उपयोग किए जाने पर - यह है कि वे लिनक्स वितरण के निर्माण के साथ बहुत अच्छी तरह से एकीकृत करते हैं।

उदाहरण के लिए cmake के साथ, यह हमेशा "-DCMAKE_CFLAGS या -DCMAKE_C_FLAGS है जो मुझे चाहिए?" नहीं, यह नहीं है, यह "-DCMAKE_C_FLAGS_RELEASE" है। OR -DCMAKE_C_FLAGS_DEBUG। यह भ्रामक है - ऑटोकॉन्फ़ में, यह सिर्फ है ।/configure CFLAGS = "- O0 -ggdb3" और आपके पास यह है।

बिल्ड इन्फ्रास्ट्रक्चर के साथ एकीकरण में, स्कोनस में वह समस्या है जिसका आप उपयोग नहीं कर सकते हैं make %{?_smp_mflags}, _smp_mflagsइस मामले में एक RPM मैक्रो होने के नाते जो लगभग सिस्टम में फैलता है (व्यवस्थापक इसे सेट कर सकता है) सिस्टम पावर। लोग अपने पर्यावरण के माध्यम से यहां -jncpus जैसी चीजों को डालते हैं। उन स्कोन्स के साथ जो काम नहीं कर रहे हैं, इसलिए स्कैन्स का उपयोग करने वाले पैकेज केवल डिस्ट्रोस में निर्मित सीरियल हो सकते हैं।


8
अगर यह सच होता तो +1 और दुनिया बेहतर जगह होती। अफसोस की बात ./configure CFLAGS=-O0है कि मेकफाइल में सीएफएलएजीएस को अधिलेखित करने वाले पैकेजों के साथ अक्सर विफल रहता है और इसके बजाय उपयोगकर्ता को चलाने की आवश्यकता होती है ./configure --enable-debug। (जैसे tmux)।
विलियम पर्ससेल

2
यह ऑटोटॉल्स से अधिक भ्रामक नहीं है और जैसा कि विलियम सही बताते हैं, यह सभी अनुचित तरीके से सीएफएलएजीएस = "<foo>" मेकफाइल में हो जाता है। काफी बस यह उन "पुराने आरा" आइटमों में से एक है। और CMake उदाहरण फर्जी हैं ... फिर से ... आप पहले कर सकते हैं यदि आप RELEASE या DEBUG को निर्दिष्ट नहीं कर रहे हैं। असफल।
Svartalf

17

ऑटोटूल के बारे में जानना महत्वपूर्ण है कि वे एक सामान्य बिल्ड सिस्टम नहीं हैं - वे GNU कोडिंग मानकों को लागू करते हैं और कुछ नहीं। यदि आप एक पैकेज बनाना चाहते हैं जो सभी जीएनयू मानकों का पालन करता है, तो ऑटोटूलस नौकरी के लिए एक उत्कृष्ट उपकरण है। यदि आप नहीं करते हैं, तो आपको Scons या CMake का उपयोग करना चाहिए। (उदाहरण के लिए, इस प्रश्न को देखें ।) यह आम गलतफहमी है कि ऑटोटूलस के साथ अधिकांश निराशा कहां से आती है।


11
GNU मानकों को AUTOMAKE_OPTIONS = -foreignआपके साथ ऑटोमेटेक में अक्षम किया जा सकता है Makefile.am। (या -foreignअपने में autogen.sh। मुझे लगता है कि लगभग हर कोई इसका इस्तेमाल करता है।)
डिट्रिच एप्प

9
हां, लेकिन यह केवल नियंत्रित करता है कि क्या ऑटोमैटिक सतही GNU नियमों को लागू करता है जैसे कि README फाइल की आवश्यकता है। यह जीएनयू-शैली टारबॉल के नियमों installcheckऔर जैसे नियमों के निर्माण के मूल आधार को नहीं बदलता है distclean। यदि आप Autotools का उपयोग करते समय भी उस तरह के व्यवहार को बदलने की कोशिश करते हैं, तो आप अपना समय बर्बाद कर रहे हैं।
पोटोमाटो

1
वे (सिद्धांत रूप में) सभी सॉफ्टवेयर पैकेजों को उसी तरह बनाने और स्थापित करने की अनुमति देते हैं।
ptomato

वे, सिद्धांत रूप में, आप BROKEN संकलक और OSes के साथ अन्य उपकरणों की तुलना में अधिक उचित रूप से निपटने और @ptomato जैसे सतही नियमों को लागू करने की अनुमति देते हैं। यदि आप एक आधुनिक ऑपरेटिंग सिस्टम (उदाहरण के लिए जीसीसी या क्लैंग ... उदाहरण के लिए) का उपयोग कर रहे हैं , तो वास्तव में नासमझ के साथ एक आधुनिक ऑपरेटिंग सिस्टम पर, लिनक्स या वर्तमान * बीएसडी कहते हैं, आप वहां "नियमों" की आवश्यकता नहीं है । वे, वास्तव में, आपके लिए बहुत अधिक काम करते हैं और मदद नहीं कर सकते, ईमानदारी से क्रॉस-संकलन के लिए। इन दिनों लगभग सभी usages के आधे एम्बेडेड Linux और * BSD के लिए हैं। आप उन चीजों के साथ क्यों जा रहे हैं जो आपकी मदद नहीं कर सकती हैं?
Svartalf

सुनिश्चित नहीं हैं कि आपने उत्तर को क्यों अस्वीकार कर दिया है, क्योंकि आप इसे अपनी टिप्पणी में स्वीकार करते हैं ...?
पोटोमाटो

9

डेवलपर्स के दृष्टिकोण से, वर्तमान में, सीमेक का उपयोग करना सबसे आसान है, उपयोगकर्ता के दृष्टिकोण से ऑटोटूलस का एक बड़ा फायदा है

ऑटोटूलस एकल फ़ाइल कॉन्फ़िगर स्क्रिप्ट उत्पन्न करते हैं और इसे उत्पन्न करने के लिए सभी फाइलें वितरण के साथ भेज दी जाती हैं। grep / sed / awk / vi की मदद से इसे समझना और ठीक करना आसान है। इसकी तुलना Cmake से करें जहाँ बहुत सारी फाइलें / usr / share / cmak * / Modules में पाई जाती हैं, जो तब तक उपयोगकर्ता द्वारा तय नहीं की जा सकती हैं जब तक कि उसके पास एडमिन एक्सेस न हो।

तो, अगर कुछ काफी काम नहीं करता है, तो आमतौर पर बिल्डसिस्टम को समझने के बिना स्लेजहेमर तरीके से स्टैंडर्ड यूनिक्स टूल्स (grep / sed / awk / vi आदि) का उपयोग करके "निश्चित" आसानी से किया जा सकता है।

क्या तुमने कभी अपने cmake बिल्ड निर्देशिका के माध्यम से खुदाई की है यह पता लगाने के लिए कि क्या गलत है? सरल शेलस्क्रिप्ट की तुलना में जो ऊपर से नीचे तक पढ़ा जा सकता है, उत्पन्न Cmake फ़ाइलों का अनुसरण करने के लिए यह पता लगाना कि क्या चल रहा है, काफी मुश्किल है। एल्डो, सीएमके के साथ, फाइंडफू।सीएमके फाइलों को अपनाने के लिए न केवल सीएमके भाषा का ज्ञान होना चाहिए, बल्कि सुपरयूजर विशेषाधिकारों की भी आवश्यकता हो सकती है।


7
मुझे नहीं लगता कि
ऑटोटूलस के

7
क्योंकि ऑटोटूल एक जटिल प्रणाली है (सीएमके की तरह)। अगर आपको लगता है कि ऑटोटूलस "आसानी से तय किए गए" हैं (ऐसा सोचने के लिए रीज़न हो सकते हैं), तो जवाब में यह बताना अच्छा होगा कि किस तरह से समस्याओं को ठीक करना आसान है।
सालेके

5
ऑटोटूलस एक एकल फ़ाइल कॉन्फ़िगर स्क्रिप्ट उत्पन्न करते हैं और इसे उत्पन्न करने के लिए सभी फाइलें वितरण के साथ भेज दी जाती हैं। grep / sed / awk / vi की मदद से इसे समझना और ठीक करना आसान है। इसकी तुलना Cmake से करें जहाँ बहुत सारी फाइलें / usr / share / cmak * / Modules में पाई जाती हैं, जिन्हें तब तक उपयोगकर्ता द्वारा तय नहीं किया जा सकता जब तक कि उसके पास व्यवस्थापक पहुँच न हो। क्या तुमने कभी अपने cmake बिल्ड निर्देशिका के माध्यम से खुदाई की है यह पता लगाने के लिए कि क्या गलत है? सरल गोले की तुलना में जो ऊपर से नीचे तक पढ़ा जा सकता है, उत्पन्न Cmake फ़ाइलों का अनुसरण करने के लिए यह पता लगाने के लिए कि क्या चल रहा है, काफी मुश्किल है
arved

2
हाँ, यह समझ में आता है, धन्यवाद। मैंने इसे आपके उत्तर में जोड़ने की स्वतंत्रता ली। नि: शुल्क :-) वापस महसूस करें।
सिल्के

1
आप हमेशा cmake के अपने स्थानीय संस्करण का उपयोग कर सकते हैं; सिस्टम स्तर पर क्या स्थापित है, इसका उपयोग करने का कोई कारण नहीं है। क्रॉस-प्लेटफ़ॉर्म काम करने वाले किसी के लिए, यह पूरी तरह से सामान्य है; यह निश्चित रूप से जिस तरह से मैं ज्यादातर समय सीमेक का उपयोग करता हूं।
जेम्स मूर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.