मैं कई वर्षों से मेक और मेकफाइल्स का उपयोग कर रहा हूं, और हालांकि अवधारणा ध्वनि है, कार्यान्वयन में कुछ वांछित है।
किसी को भी किसी भी अच्छा विकल्प मिल गया है कि समस्या खत्म नहीं है?
मैं कई वर्षों से मेक और मेकफाइल्स का उपयोग कर रहा हूं, और हालांकि अवधारणा ध्वनि है, कार्यान्वयन में कुछ वांछित है।
किसी को भी किसी भी अच्छा विकल्प मिल गया है कि समस्या खत्म नहीं है?
scons
, luigi
(के लिए अनुकूलित shouldsee/luck
), snakemake
, waf
। कई जावा विकल्प हैं, लेकिन उन सभी को लिखने के लिए यह स्थान बहुत छोटा है।
जवाबों:
स्कैन बाहर की जाँच करें । उदाहरण के लिए डूम 3 और ब्लेंडर इसका उपयोग करते हैं।
मेरे बहुत से मित्र हैं जो सीएमके द्वारा क्रॉस-प्लेटफॉर्म विकास के लिए शपथ लेते हैं:
यह वीटीके (अन्य चीजों के बीच) के लिए उपयोग की जाने वाली निर्माण प्रणाली है , जो क्रॉस प्लेटफॉर्म पायथन, टीसीएल और जावा बाइंडिंग के साथ सी ++ लाइब्रेरी है। मुझे लगता है कि यह शायद सबसे कम जटिल बात है जो आपको कई क्षमताओं के साथ मिलेगी।
आप हमेशा मानक ऑटोटूलस आज़मा सकते हैं । यदि आप केवल यूनिक्स पर चल रहे हैं और यदि आप C / C ++ से चिपके रहते हैं, तो स्वचालित फ़ाइलों को एक साथ रखना बहुत आसान है। एकीकरण अधिक जटिल है, और ऑटोटूलस अब तक की सबसे सरल प्रणाली से दूर है।
doit एक पायथन टूल है। यह बिल्ड-टूल्स की अवधारणाओं पर आधारित है, लेकिन अधिक सामान्य है।
गनोम की कुछ परियोजनाएं वफ़ में स्थानांतरित हो रही हैं ।
यह पाइथन-आधारित है, जैसे स्कॉन, लेकिन स्टैंडअलोन भी - इसलिए अन्य डेवलपर्स की आवश्यकता के बजाय अपने पसंदीदा बिल्ड टूल को स्थापित करने के लिए, आप बस स्टैंडअलोन बिल्ड स्क्रिप्ट को अपने प्रोजेक्ट में कॉपी करते हैं।
ninja
बिल्ड टूल (v1.8.2 सितंबर 2017) से अवगत रहें जो कि tup
और से प्रभावित है redo
।
बिल्ड फ़ाइल जनरेटर cmake
(उदाहरण के लिए यूनिक्स मेकफाइल्स, विज़ुअल स्टूडियो, एक्सकोड, एक्लिप्स सीडीटी, ...) ninja
संस्करण 2.8.8 (अप्रैल 2012) के बाद से फ़ाइलों का निर्माण भी कर सकता है और, afaik, ninja
अब भी डिफ़ॉल्ट बिल्ड टूल का उपयोग करता है cmake
।
यह make
उपकरण को बेहतर बनाने के लिए माना जाता है (बेहतर निर्भरता ट्रैकिंग और समानांतर भी है)।
cmake
एक पहले से ही स्थापित टूल है। आप अपनी कॉन्फ़िगरेशन फ़ाइलों को संशोधित किए बिना बिल्ड टूल को बाद में चुन सकते हैं। इसलिए अगर भविष्य में एक बेहतर निर्माण विकसित किया जाता है जो cmake
आपके द्वारा समर्थित होगा, तो आप इसे आसानी से बदल सकते हैं।
ध्यान दें कि c / c ++ के लिए संकलन समय में सुधार कभी-कभी सीमित होता है क्योंकि प्रीप्रोसेसर (विशेष रूप से हेडर-केवल लिबास का उपयोग करते हुए, उदाहरण के लिए बढ़ावा देने और ईजेन के लिए ) हेडर शामिल होते हैं, जो उम्मीद है कि मॉड्यूल के प्रस्ताव द्वारा प्रतिस्थापित किया जाएगा (तकनीकी समीक्षा में) c ++ 11 या अंततः c ++ 1y में)। इस मुद्दे पर विवरण के लिए इस प्रस्तुति को देखें।
tup
पर निर्भर करता है fuse
, जहाँ तक मेरा सवाल है कि यह सुझाव देता है कि अनुचर पागल हैं। redo
दो वर्षों में अद्यतन नहीं किया गया है। मैं सुझा दूंगा ninja
।
मैंने खातिर एक उपकरण लिखा था, जिसने लिखने-पढ़ने जैसी चीजों को लिखने और लिखने में बहुत आसान बनाने की कोशिश की।
make
सिंटैक्स के साथ विरोधाभासी है ।
यह इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। अगर सभी आप चाहते हैं मेकअप शैली लक्ष्य निर्भरता और आदेश मंगलाचरण है, तो मेक वास्तव में इस काम के लिए बेहतर उपकरण में से एक है। :-) रेक बहुत अच्छा है, लेकिन कुछ सरल मामलों के लिए अनाड़ी हो सकता है। चींटी बेशक वर्बोसिटी शहर है, लेकिन इसमें जावा जैसी भाषाओं (स्काला और ग्रूवी शामिल) के निर्माण के लिए बेहतर समर्थन है। इसके अलावा, चींटी हर जगह उपलब्ध है । यही मुख्य कारण है कि मैं इसका उपयोग करता हूं। क्योंकि यह विंडोज पर लगातार काम करता है, यह वास्तव में मेक की तुलना में अधिक क्रॉस-प्लेटफॉर्म है।
यदि आप जावा-लाइब्रेरियों के लिए निर्भरता प्रबंधन चाहते हैं, तो मावेन विहित विकल्प है, लेकिन मैं व्यक्तिगत रूप से बिल्डर को बहुत पसंद करता हूं। यह अनुकूलित करने के लिए तेज़ और बहुत आसान है (यह रेक पर आधारित है)। दुर्भाग्य से, यह अभी तक मावेन के रूप में सर्वव्यापी नहीं है।
रूबी की मेक सिस्टम को रेक कहा जाता है: http://rake.rubyforge.org/
काफी आशाजनक लग रहा है।
वहाँ हमेशा चींटी है: http://ant.apache.org , जो मुझे व्यक्तिगत रूप से भयावह लगता है। हालांकि, यह जावा विकास के लिए वास्तविक मानक है।
मैं अभी भी विकल्प का एक गुच्छा माना जाने के बाद करना पसंद करते हैं। जब आप कंपाइलर के माध्यम से ऑटो-जेनरेट की गई निर्भरताएं या फास्टडेप जैसी कोई चीज करते हैं तो बहुत कुछ करना बाकी नहीं है। विशेष रूप से मैं नहीं चाहता कि मेरी बिल्ड स्क्रिप्ट कार्यान्वयन भाषा से जुड़ी हो, और अधिक पठनीय विकल्प उपलब्ध होने पर मुझे एक्सएमएल में सामान लिखना पसंद नहीं है। एक उपकरण जो सामान्य प्रयोजन की भाषा को उजागर करता है, उसमें योग्यता होती है, लेकिन फिर भी दूसरी व्याख्या की गई भाषा नहीं होती है (afaik)। क्या गलत है मेक के साथ? मेक से दूर जाने के बारे में अपने दृष्टिकोण से अपील कर सकते हैं।
/ एलन
RTDA से फ्लो-ट्रेसर एक और अच्छा विकल्प है जिसे मैंने बड़े पैमाने पर पर्यावरण (दसियों हज़ार नौकरियों) में व्यावसायिक रूप से इस्तेमाल किया है: http://www.rtda.com/flowtracer-design-flow-infrastructure-software
इसमें एक GUI है जो फाइलों के लिए नौकरियों और अंडाकार के लिए रंग-कोडित बक्से के साथ निर्भरता ग्राफ दिखाता है। जब नौकरियों और फाइलों की संख्या अधिक हो जाती है, तो GUI- आधारित टूल जैसे FlowTracer बहुत आवश्यक है।
प्रारंभिक सेटअप लागत मेक की तुलना में अधिक है। इसका उपयोग करके अपना पहला प्रवाह स्थापित करने के लिए एक सीखने की अवस्था है। उसके बाद, यह जल्दी हो जाता है।
मुझे यकीन नहीं है कि आप यहां सही सवाल पूछ रहे हैं।
क्या आप एक सरलीकृत बनाने के बाद हैं? किस मामले में, आपको किसी ऐसे व्यक्ति को प्राप्त करने की आवश्यकता है जो कि (M | m) akefiles की एक श्रृंखला बनाने के लिए बहुत परिचित है जो आपकी समस्या को सरल करेगा।
या आप अंतर्निहित तकनीक को देखना चाहते हैं? क्या हम एक डिज़ाइन-बाय-कॉन्ट्रैक्ट टाइप आर्किटेक्चर लागू करना चाहते हैं, जो कोड डिज़ाइन में बनाया और लागू किया गया है? या संभवतः, स्वयं भाषा, उदाहरण के लिए एडा और इसकी अवधारणा (इंटरफेस) और निकाय (कार्यान्वयन)?
इस तरह के प्रश्न के संभावित परिणामों को निश्चित रूप से प्रभावित करने के बाद आप किस दिशा में हैं?
असल में, केवल उन घटकों से बिल्डिंग सिस्टम के नए तरीके जो वास्तव में नई प्रौद्योगिकियों को अपनाने बनाम बनाम बदल गए हैं जिनके पास डिजाइन द्वारा निर्मित ऐसे तंत्र हैं।
क्षमा करें, यह प्रत्यक्ष उत्तर नहीं है। बस कोशिश करना चाहता था और आपको मूल्यांकन करना था कि आप किस रास्ते पर चलना चाहते हैं।
चीयर्स,
लूटना
make
यह बहुत सरल है।