लिनक्स/फ्रीब्स के लिए make के कुछ विकल्प क्या हैं?लिनक्स/फ्रीब्स के लिए विकल्प बनाने के विकल्प?
उत्तर
मुझे SCons पसंद है। यह इस तरह से बनाया गया है कि प्रत्येक निर्माण स्क्रिप्ट (SConstruct
फ़ाइल) एक वाक्य रचनात्मक रूप से मान्य पायथन प्रोग्राम भी है। इसलिए, यदि आपको आवश्यकता हो तो आप अपनी बिल्ड स्क्रिप्ट में मनमानी पायथन तर्क बना सकते हैं।
यह make
से भी अधिक तेज़ है और कई प्रकार की निर्भरताओं की स्वचालित गणना करता है।
Automake: p जो आमतौर पर सबसे linux एप्लिकेशन वितरण में प्रयोग किया जाता है, लेकिन यह एक बिट एक Makefile की तुलना में अधिक काम लेकिन बेहतर परिणाम http://www.gnu.org/software/automake/ देता
http://www.openismus.com/documents/linux/automake/automake.shtml < - कैसे automake और autoconf
Autotools वास्तव में 'मेक' के लिए एक विकल्प नहीं है, क्योंकि अंत में यह GNUMakefiles उत्पन्न करता है। तो सिर्फ आर्केन मेकफ़ाइल सिंटैक्स के बजाय, अब आपके पास केक पर टुकड़े टुकड़े के रूप में पुरानी शैली वाली शेल-स्क्रिप्ट और 'एम 4' मैक्रोज़ भी हैं! दूसरे शब्दों में, अब आपके पास * तीन * समस्याएं हैं। –
cmake और imake दोनों उपयोगिताएं हैं, हालांकि इमेक अब बनाए रखा नहीं गया है। सीमेक भी क्रॉस-प्लेटफार्म है और विंडोज़ पर भी इसका इस्तेमाल किया जा सकता है।
यदि आप जावा में हैं, ANT जावा के लिए निर्मित एक निर्माण उपकरण है (जो वास्तव में मेक के साथ अच्छी तरह से खेलता नहीं है)।
ट्रॉल तकनीक qmake नामक एक उपकरण बनाती है, जिसे वे क्यूटी बनाने के लिए उपयोग करते हैं। यह मेकफ़ाइल उत्पन्न करके काम करता है - ट्रॉल को क्रॉस-प्लेटफार्म निर्माण का समर्थन करने के लिए एक टूल की आवश्यकता होती है - इसलिए आपको अभी भी एक और बनाने की आवश्यकता है।
ट्रॉल्टेक क्यूमेक और सेमेक में चले गए हैं, इसलिए मैं बाद में इसके बजाय बाद में जाऊंगा। सीएमके विभिन्न प्रकार के आईडीई के लिए आईडीई परियोजनाओं के रूप में मेकफ़ाइल उत्पन्न करता है। –
@ ड्रिबीस के पास यह सही है, क्यूटी और मेरा मानना है कि पूरी केडीई परियोजना को सीएमके में ले जाया गया था। –
मुझे यकीन नहीं है कि आप उसी वाक्य में सेमेक और इमेक का उल्लेख क्यों करते हैं ... – JesperE
यदि आप कुछ पूरी तरह से अलग खोज रहे हैं, तो Ant है। मुझे इसमें दिलचस्पी नहीं है, लेकिन यह कुछ पोर्टेबिलिटी फायदे (यूनिक्स शैल इत्यादि पर निर्भरता नहीं है)
OMake स्वचालित निर्भरता विश्लेषण के साथ सी/सी ++, ओकैमल और लाटेक्स के लिए एक बिल्ड टूल है । यह आसानी से कई निर्देशिकाओं पर परियोजनाओं का निर्माण कर सकता है, और यह टाइमस्टैम्प की बजाय MD5 sum के आधार पर परिवर्तन पाता है। इसमें एक मोड भी है जहां इसे पृष्ठभूमि में चलाया जा सकता है, जब भी फ़ाइल संशोधित होती है तो अपनी परियोजना का निर्माण करना। आम तौर पर, ऐसा करने से सामान्य प्रकार की परियोजनाओं (सी/सी ++ या ओकैमल कार्यक्रम और पुस्तकालय) बनाने के लिए कम कोड लगता है। मैंने बड़ी परियोजनाओं के लिए कोशिश नहीं की है।
ध्यान दें कि यदि आप ओकैमल में प्रोग्राम करना चाहते हैं, तो यह टूल वास्तव में उपयोगी है क्योंकि ओकैम लिंकर को निर्भरता क्रम में कमांड लाइन पर दिखाई देने के लिए संकलित मॉड्यूल की आवश्यकता होती है, और प्रत्येक बार कुछ बदलावों को बदलने के लिए इस आदेश को समझना गैर-तुच्छ है।
मेरा पहला सवाल होगा, दर्शक क्या हैं। क्या यह घर के सॉफ्टवेयर के निर्माण के लिए है जो केवल आपकी टीम का निर्माण करेगा? यदि ऐसा है, तो पहले से प्रस्तुत कुछ विकल्पों का पता लगाएं। यदि यह ऐसा कुछ है जो दूसरों का निर्माण होगा, या तो बनाने के साथ चिपके रहें, या ऐसे टूल का उपयोग करें जो मेकफ़ाइल बनाता है और उन्हें जहाज भेजता है। हम लिनक्स और अन्य यूनिक्स प्लेटफॉर्म के लिए ऑटोकॉन्फ़ और ऑटोमैक का उपयोग करते हैं। मेरी राय में, आपको कॉन्फ़िगर करने के अलावा कुछ और करने का बहुत अच्छा कारण चाहिए; बनाना; स्थापित करें बूस्ट का अपना टूल (जाम का एक संशोधित संस्करण) है, और यह हर बार मुझे परेशान करता है और मुझे असामान्य मशीन पर संकलन करने की आवश्यकता होती है।
परियोजना मैं पर काम कर रहा हूँ (ग्रेग Hewgill के जवाब में SCons
के साथ भ्रमित करने के लिए नहीं) कुछ कोड Cons
बजाय Make
का उपयोग करता है विरासत में मिला।
Cons
पर्ल में लिखा गया है, SCons
की तरह पायथन में लिखा गया है। यह निर्भरता स्वचालित रूप से प्रबंधित करता है, और आप जटिल निर्माण अनुक्रमों को संभालने के लिए बिल्ड स्क्रिप्ट के अंदर किसी भी पर्ल कोड का उपयोग कर सकते हैं।
मुख्य नुकसान (और मुख्य कारण मुझे खेद है कि मेरी परियोजना इसका उपयोग करती है) यह है कि Cons
make -j
की शैली में समांतर बिल्ड नहीं करता है। यदि आप कई अन्य फाइलों को संकलित कर रहे हैं जो एक दूसरे पर निर्भर नहीं हैं Cons
उन्हें एक समय में संकलित करेगा, जबकि make -j
उन्हें समानांतर में संकलित करेगा, जो आपके मशीन पर एकाधिक कोर और थ्रेड हैं, तो यह बहुत अच्छा है।
और दुर्भाग्य से विपक्ष एक मृत परियोजना प्रतीत होता है; पिछली बार मैंने देखा कि इस पर कोई मौजूदा विकास नहीं है। – JesperE
मैंने अपनी कुछ परियोजनाओं के लिए सीएमके का उपयोग किया है, जिसमें कुछ ऑटोटूल आधारित हैं और मैं कह सकता हूं कि यह बहुत अच्छा काम करता है। यह सी/सी ++ क्रॉस प्लेटफार्म परियोजनाओं के लिए ज्यादातर उपयुक्त है।
एक और बनाता है kmake
है पार मंच के लिए बनाने के (kbuild
का एक हिस्सा है, अपने ही शब्दों में:। kBuild जटिल कार्यों के लिए सरल makefiles लिखने के लिए एक makefile रूपरेखा है)। यह जीएनयू make
का एक उन्नत संस्करण है। यह वर्चुअलबॉक्स लोगों द्वारा विकसित किया गया है। वे विंडोज, लिनक्स, मैकोज़ और सोलारिस के लिए अपने वर्चुअलबॉक्स उत्पाद बनाने के लिए इसका इस्तेमाल करते हैं। सुंदर पोर्टेबल!
विवरण के लिए http://svn.netlabs.org/kbuild देखें।
WAF एक दिलचस्प विकल्प है। पायथन में लिखित यह आपको सादे पायथन में अपना निर्माण तर्क लिखने की अनुमति देता है। समांतर बिल्ड + अर्ध-ऑटो-जादू हस्ताक्षर-आधारित निर्भरता ट्रैकिंग उचित रूप से अच्छी तरह से काम करती है। यह माना जाता है कि क्रॉस-प्लेटफार्म (यानी जानता है कि विंडोज़ पर कैसे निर्माण करना है), लेकिन मैंने कोशिश नहीं की है।
यह काफी हद तक सीखने की वक्र है, लेकिन यह प्रक्रिया के साथ सहायता के लिए "The WAF book" के साथ भी आता है।
कुछ समय पहले मुझे बिल्ड समस्या को ठीक करने के लिए 'waf' में देखना था। 'Wscript' के माध्यम से देखने के बाद मुझे' waf' 'के कोड में खोदना पड़ा। यह बहुत अस्पष्ट दिखता है। बस मस्ती के लिए मैंने नवीनतम संस्करण पर 'pep8' भाग लिया, और उसने 6000 त्रुटियां और 25000 चेतावनियां दीं। निष्पक्ष होने के लिए, मैंने हाल ही में रिलीज की नवीनतम रिलीज में लेखकों ने बहुत सारे दस्तावेज जोड़े हैं। –
सीएमके –
'मुझे मत भूलना? बनाने से तेज़? आप किस प्राचीन हार्डवेयर पर चल रहे हैं? पिछली बार मैंने देखा, स्कैन के गंभीर प्रदर्शन मुद्दे हैं। इसके अलावा, मुझे स्कॉन्स पसंद है। – JesperE