ऑटोटूलस, सीमेक और स्कैन के बीच अंतर क्या हैं?
ऑटोटूलस, सीमेक और स्कैन के बीच अंतर क्या हैं?
जवाबों:
सच में, ऑटोटूलस 'केवल वास्तविक' बचत अनुग्रह 'है कि यह सभी जीएनयू परियोजनाओं का बड़े पैमाने पर उपयोग कर रहा है।
ऑटोटूलस के मुद्दे:
यह काम करता है ... अधिकांश समय ... आप सभी ऑटोटूल के बारे में कह सकते हैं। यह एक ऐसी प्रणाली है जो कई समस्याओं को हल करती है जो केवल GNU प्रोजेक्ट की चिंता करती है ... उनके आधार, कोर टूलकिन कोड के लिए। (संपादित करें (०५/२४/२०१४): यह ध्यान दिया जाना चाहिए कि इस प्रकार की चिंता के बारे में चिंता करने के लिए एक संभावित BAD चीज है- इस सोच से उपजी हार्दिक और सही, आधुनिक प्रणालियों के साथ, आप वास्तव मेंऑटोटूलस के लिए जो कुछ भी सही है, उसके साथ कोई व्यवसाय नहीं है। GNU को शायद कोडबेस का एक क्रिप्ट रिमूव करने की जरूरत है, जो हर्टबल के साथ हुआ है) के प्रकाश में) आप इसे अपने प्रोजेक्ट को करने के लिए उपयोग कर सकते हैं और यह एक छोटे प्रोजेक्ट के लिए अच्छी तरह से काम कर सकता है, जिसे आप लिनक्स या इसके अलावा कहीं भी काम करने की उम्मीद नहीं करते हैं। GNU टूलकिन स्पष्ट रूप से सही ढंग से काम कर रहा है। बयान है कि यह "लिनक्स के साथ अच्छी तरह से एकीकृत करता है" काफी बोल्ड स्टेटमेंट है और काफी गलत है । यह जीएनयू टूलूसाइट के साथ काफी अच्छी तरह से एकीकृत करता है और समस्याओं को हल करता है जो आईटी के पास इसके लक्ष्य हैं।
यह कहना नहीं है कि यहां थ्रेड में चर्चा किए गए अन्य विकल्पों के साथ कोई समस्या नहीं है।
SCON मेक / GMake / etc के प्रतिस्थापन का अधिक है। और बहुत अच्छा लग रहा है, हालांकि सभी चीजें मानी जाती हैं ...
इस धागे में CMake के लिए दिए गए उदाहरण थोड़े संगीन हैं।
तथापि...
सही मायने में, आपके लक्ष्यों को आप यहां क्या चुनते हैं, यह तय करना चाहिए।
एक कारण कई है, कई परियोजनाएं क्यूमेक, ऑटोटूलस, आदि को खोद रही हैं और सीएमके तक जा रही हैं। अब तक, मैं एक सीएमके आधारित परियोजना को साफ-साफ उम्मीद कर सकता हूं कि या तो क्रॉस-कंपाइल स्थिति में या विजुअलस्टडियो सेटअप पर ड्रॉप किया जाए या केवल थोड़ी मात्रा में सफाई की आवश्यकता है क्योंकि प्रोजेक्ट विंडोज-ओनली या ओएसएक्स-ओनली पार्ट्स के लिए जिम्मेदार नहीं था। कोडबेस के लिए। मैं वास्तव में एक SCons की है कि बाहर स्थित परियोजना उम्मीद नहीं कर सकते और मैं पूरी तरह से उम्मीद 1/3 या अधिक Autotools परियोजनाओं मिल गया है करने के लिए कुछ गलत है कि precludes यह मेजबान एक या एक Scratchbox2 एक निर्माण को छोड़कर किसी भी संदर्भ पर सही का निर्माण।
उपकरण का उपयोग करने वाले के बीच एक महत्वपूर्ण अंतर होना चाहिए। Cmake एक उपकरण है जिसका उपयोग उपयोगकर्ता को सॉफ्टवेयर बनाते समय करना चाहिए। ऑटोटूलस का उपयोग एक वितरण टारबॉल उत्पन्न करने के लिए किया जाता है जिसका उपयोग किसी भी एसयूएस अनुरूप प्रणाली पर उपलब्ध मानक उपकरण का उपयोग करके सॉफ़्टवेयर के निर्माण के लिए किया जा सकता है। दूसरे शब्दों में, यदि आप एक टैरबॉल से सॉफ़्टवेयर स्थापित कर रहे हैं जो ऑटोटूल का उपयोग करके बनाया गया था, तो आप ऑटोटूल का उपयोग नहीं कर रहे हैं । दूसरी ओर, यदि आप Cmake का उपयोग करने वाले सॉफ़्टवेयर को स्थापित कर रहे हैं, तो आप Cmake का उपयोग कर रहे हैं और सॉफ़्टवेयर को बनाने के लिए इसे इंस्टॉल करना होगा।
अधिकांश उपयोगकर्ताओं को अपने बॉक्स पर ऑटोटूल स्थापित करने की आवश्यकता नहीं है। ऐतिहासिक रूप से, बहुत भ्रम पैदा हो गया है क्योंकि कई डेवलपर्स विकृत टारबॉल वितरित करते हैं जो उपयोगकर्ता को कॉन्फ़िगर स्क्रिप्ट को पुन: उत्पन्न करने के लिए ऑटोकॉन्फ़ चलाने के लिए मजबूर करते हैं, और यह एक पैकेजिंग त्रुटि है। अधिक भ्रम इस तथ्य के कारण हुआ है कि अधिकांश प्रमुख लिनक्स वितरण ऑटोटूल के कई संस्करणों को स्थापित करते हैं, जब उन्हें डिफ़ॉल्ट रूप से उनमें से कोई भी स्थापित नहीं करना चाहिए। इससे भी अधिक भ्रम की स्थिति डेवलपर्स द्वारा एक संस्करण नियंत्रण प्रणाली (जैसे cvs, git, svn) का उपयोग करके अपने सॉफ़्टवेयर को वितरित करने के बजाय टारबॉल बनाने के प्रयास के कारण होती है।
asciidoc
या help2man
या doxygen
, महत्वपूर्ण रूप से हो सकती है । यह ऑटोटूलस के लिए एक बहुत बड़ी विपणन समस्या रही है। उपयोगकर्ता गलत तरीके से सोचते हैं कि उन्हें ऑटोकॉन्फ़ स्थापित करने की आवश्यकता है क्योंकि वे टारबॉल और वीसीएस के बीच अंतर को नहीं समझते हैं।
यह 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 जैसी चीजों को डालते हैं। उन स्कोन्स के साथ जो काम नहीं कर रहे हैं, इसलिए स्कैन्स का उपयोग करने वाले पैकेज केवल डिस्ट्रोस में निर्मित सीरियल हो सकते हैं।
./configure CFLAGS=-O0
है कि मेकफाइल में सीएफएलएजीएस को अधिलेखित करने वाले पैकेजों के साथ अक्सर विफल रहता है और इसके बजाय उपयोगकर्ता को चलाने की आवश्यकता होती है ./configure --enable-debug
। (जैसे tmux
)।
ऑटोटूल के बारे में जानना महत्वपूर्ण है कि वे एक सामान्य बिल्ड सिस्टम नहीं हैं - वे GNU कोडिंग मानकों को लागू करते हैं और कुछ नहीं। यदि आप एक पैकेज बनाना चाहते हैं जो सभी जीएनयू मानकों का पालन करता है, तो ऑटोटूलस नौकरी के लिए एक उत्कृष्ट उपकरण है। यदि आप नहीं करते हैं, तो आपको Scons या CMake का उपयोग करना चाहिए। (उदाहरण के लिए, इस प्रश्न को देखें ।) यह आम गलतफहमी है कि ऑटोटूलस के साथ अधिकांश निराशा कहां से आती है।
AUTOMAKE_OPTIONS = -foreign
आपके साथ ऑटोमेटेक में अक्षम किया जा सकता है Makefile.am
। (या -foreign
अपने में autogen.sh
। मुझे लगता है कि लगभग हर कोई इसका इस्तेमाल करता है।)
installcheck
और जैसे नियमों के निर्माण के मूल आधार को नहीं बदलता है distclean
। यदि आप Autotools का उपयोग करते समय भी उस तरह के व्यवहार को बदलने की कोशिश करते हैं, तो आप अपना समय बर्बाद कर रहे हैं।
डेवलपर्स के दृष्टिकोण से, वर्तमान में, सीमेक का उपयोग करना सबसे आसान है, उपयोगकर्ता के दृष्टिकोण से ऑटोटूलस का एक बड़ा फायदा है
ऑटोटूलस एकल फ़ाइल कॉन्फ़िगर स्क्रिप्ट उत्पन्न करते हैं और इसे उत्पन्न करने के लिए सभी फाइलें वितरण के साथ भेज दी जाती हैं। grep / sed / awk / vi की मदद से इसे समझना और ठीक करना आसान है। इसकी तुलना Cmake से करें जहाँ बहुत सारी फाइलें / usr / share / cmak * / Modules में पाई जाती हैं, जो तब तक उपयोगकर्ता द्वारा तय नहीं की जा सकती हैं जब तक कि उसके पास एडमिन एक्सेस न हो।
तो, अगर कुछ काफी काम नहीं करता है, तो आमतौर पर बिल्डसिस्टम को समझने के बिना स्लेजहेमर तरीके से स्टैंडर्ड यूनिक्स टूल्स (grep / sed / awk / vi आदि) का उपयोग करके "निश्चित" आसानी से किया जा सकता है।
क्या तुमने कभी अपने cmake बिल्ड निर्देशिका के माध्यम से खुदाई की है यह पता लगाने के लिए कि क्या गलत है? सरल शेलस्क्रिप्ट की तुलना में जो ऊपर से नीचे तक पढ़ा जा सकता है, उत्पन्न Cmake फ़ाइलों का अनुसरण करने के लिए यह पता लगाना कि क्या चल रहा है, काफी मुश्किल है। एल्डो, सीएमके के साथ, फाइंडफू।सीएमके फाइलों को अपनाने के लिए न केवल सीएमके भाषा का ज्ञान होना चाहिए, बल्कि सुपरयूजर विशेषाधिकारों की भी आवश्यकता हो सकती है।