2008-09-10 9 views
22

मुझे आश्चर्य है कि जीएनयू ऑटोटूल को बदलने के लिए कोई अच्छा और साफ उपकरण है या एक बहुत बड़ी सी ++ परियोजना बनाने के लिए मेक है, जो उपयोग करने के लिए ऐसी जटिल चीज है।सी ++ प्रोजेक्ट के लिए कोई भी अच्छा भवन उपकरण, जो प्रतिस्थापित कर सकता है?

प्रोजेक्ट छोटा होने पर Autotools की सभी फ़ाइलों को उत्पन्न करना आसान है, लेकिन यदि स्रोत कोड कई निर्देशिकाओं में विभाजित है, तो कई तृतीय पक्ष पुस्तकालयों और कई निर्भरताओं के साथ, आप "Autotools Hell" में आते हैं .. कोई सुझाव

उत्तर

18

Google V8 JavaScript Engine C++ लिखा है और SCons का उपयोग करता है, इसलिए मुझे लगता है कि यह है कि इसके लिए एक वोट है।

+2

हमने पाया है कि बड़े विजुअल स्टूडियो समाधानों के लिए स्कैन असामान्य रूप से धीमा है। यह यूनिक्स-आईएसएच सिस्टम पर बहुत अच्छी तरह से काम करता है। –

+0

@ क्रिस्टोफर: क्या आप विस्तारित कर सकते हैं? मुझे यह नहीं मिला कि यह मेरे अनुभव में मामला है। जहां आप devstudio फ़ाइलों से scons फ़ाइलों को उत्पन्न करते हैं? – grieve

+2

मैं इसे दूसरा करता हूं: बड़े निर्माण के लिए स्कैन बहुत धीमी होती है। – jkp

18

CMake के लिए

धन्यवाद? (मेकफ़ाइल उत्पन्न करता है, इसलिए तकनीकी रूप से इस तरह के प्रतिस्थापन नहीं)।

मैंने हाल ही में कुछ स्थानों में "SCons" पॉप अप भी देखा है। यद्यपि इसके साथ कुछ भी नहीं बनाया है।

+0

यह बनाने को प्रतिस्थापित नहीं करता रास्ता दिया,, लेकिन CMake Autotools की जगह करता है बहुत अच्छी तरह से – jturcotte

2

कुक एक और उपकरण है जिसे बनाने के लिए उपयोग किया जा सकता है। मैंने इसका उपयोग कर कई बड़ी कंपनियों को देखा है। इसलिए, यह एंटरप्राइज़ तैयार है भले ही वेबसाइट दिनांकित दिखती है।

http://miller.emu.id.au/pmiller/software/cook/

+0

मैं अपनी छोटी निजी परियोजनाओं के लिए कुक हर समय का उपयोग करें। मुझे इसके बारे में क्या पसंद है कि मैं एक मौजूदा सूची से a.c, b.c, c.c. जैसे फ़ाइल नामों को a.o, b.o, c.o की सूची बना सकता हूं। यहां तक ​​कि ए 1 सी, बी 1 सी, सी 1 सी जैसे अजीब चीजें भी a2.c, b2.c उत्पन्न करते हैं। मेकफ़ाइल ऐसा करने में सक्षम नहीं लगते हैं। मुख्य दोष: कुक की अपनी भाषा है, इसलिए आप पाइथन, रूबी इत्यादि में मौजूदा कौशल का लाभ नहीं उठा सकते हैं – DarenW

6

हम एक जटिल सी ++ परियोजना के लिए जाम का उपयोग करते हैं - एक लाभ यह है कि यह अच्छी तरह से पार मंच है। मेरे फायदे से बाहर निकलने के बजाय, बस इस लिंक पर एक त्वरित नज़र डालें: http://www.perforce.com/jam/jam.html

+0

हम छः या सात साल पहले मेकफ़ाइल से जाम चले गए। चीजों को पाने और जाने के लिए थोड़ी देर लग गई, लेकिन एक बार प्रारंभिक काम करने के बाद, यह तब से निर्बाध रहा है। नई परियोजनाओं की स्थापना लगभग मामूली है। –

+0

^ले जाया जाम^जाम –

15

waf पर एक नज़र डालें।

मुझे लगता है कि आप इसे बनाने और autotools के लिए एक पूर्ण प्रतिस्थापन के रूप में विचार कर सकते हैं। यह अजगर पर आधारित है। एक चीज मुझे वैफ के बारे में पसंद है कि वाफ स्क्रिप्ट स्वयं ~ 100kb स्टैंडअलोन है जिसे आप अपनी प्रोजेक्ट रूट निर्देशिका में रखते हैं। यह बनाने या बनाने और दोस्तों के विपरीत है, जहां निर्माण प्रणाली को पहले स्थापित किया जाना चाहिए। हालांकि आपके पास पाइथन> = 2.3 स्थापित होना आवश्यक है।

~$ ./waf configure && ./waf && ./waf install 

मेकफ़ाइल के बराबर वाफ का संस्करण wscript फ़ाइल है। यह एक अजगर स्क्रिप्ट वाफ पढ़ता है, और यह कम से कम 3 कार्यों को परिभाषित करता है: set_options(), configure(conf) और build(bld)। आप अनुमान लगा सकते हैं कि उनमें से प्रत्येक क्या करता है।

जंपस्टार्ट करने के लिए, मैं स्रोत वितरण में डेमो/सीपीपी/* फ़ाइलों को देखने की अनुशंसा करता हूं। दस्तावेज़/waf.pdf फ़ाइल पर भी नज़र डालें; यह एक 12-पेज का दस्तावेज़ है जो आपको जल्दी से चलाएगा और चल रहा है।

+0

स्कैन भी "कोई इंस्टॉल नहीं" संस्करण प्रदान करता है ... 5.5KB पर वजन ... – paxos1977

+2

5.5KB? 2.1 * एमबी * कोशिश करें !! – richq

+2

स्कॉन्स भी कुत्ते-धीमी है। मैं इसे एक साल या उससे अधिक समय तक इस्तेमाल कर रहा हूं और वेफ एएसएपी में जाना चाहता हूं। – jkp

5

नोएल लोपिस ने बिल्ड सिस्टम की तुलना में कुछ लेख लिखे हैं। "परफेक्ट बिल्ड सिस्टम के लिए क्वेस्ट" का भाग 1 http://gamesfromwithin.com/the-quest-for-the-perfect-build-system पर है। भाग 2 एक ही साइट पर चलता है। http://gamesfromwithin.com/?p=104 पर स्कैन का पुन: प्रयास किया गया है।

निष्कर्ष: स्कैन बहुत धीमी है ... जाम विजेता है।

+1

वह आलेख 2005 से है, इसलिए यह बहुत दिनांकित है। – JesperE

+0

सच है। हालांकि स्कॉन्स का नया परीक्षण है, जो कि पिछले साल के अंत से है। बस टूटी हुई लिंक को अपडेट किया गया। –

+0

पहला लिंक मृत प्रतीत होता है। – shuttle87

2

मैं (दोनों लिनक्स और विंडोज पर) एक बड़ा C++ परियोजना पर SCons का उपयोग कर दिया है, और यह वास्तव में अच्छी तरह से काम करता है।

scons all -j8 (जो समानांतर में ऑब्जेक्ट फ़ाइलों को संकलित करता है) बहुत अच्छा है!

1

मैं अपनी निर्माण प्रक्रिया के लिए bakefile का उपयोग करता हूं और मैं एक बड़ा प्रशंसक बन गया!

मुझे अब मेकफ़ाइल खुद को कभी लिखना नहीं है, अकेले भयानक जीएनयू ऑटोोटूल स्क्रिप्ट्स को छोड़ दें। मुझे बस इतना करना है कि XML फ़ाइल प्रदान करें जो निर्माण लक्ष्यों का वर्णन करती है। Bakefile एक Makefile कि सभी (हेडर फाइल) हो जाता है में इस परिवर्तित कर सकते हैं निर्भरता सही आदि है, जहां विभिन्न Makefile प्रारूपों चुना जा सकता है (प्रलेखन से सूची चिपकाने):

available formats are: 
    autoconf  GNU autoconf Makefile.in files 
    borland  Borland C/C++ makefiles 
    dmars   Digital Mars makefiles 
    dmars_smake Digital Mars makefiles for SMAKE 
    gnu   GNU toolchain makefiles (Unix) 
    mingw   MinGW makefiles (mingw32-make) 
    msevc4prj  MS eMbedded Visual C++ 4 project files 
    msvc   MS Visual C++ nmake makefiles 
    msvc6prj  MS Visual C++ 6.0 project files 
    msvs2003prj MS Visual Studio 2003 project files 
    msvs2005prj MS Visual Studio 2005 project files 
    symbian  Symbian development files 
    watcom  OpenWatcom makefiles 
    xcode2  Xcode 2.4 project files 

मैं आमतौर पर autoconf विकल्प का उपयोग , और यह मेरे लिए कष्टप्रद जीएनयू ऑटोोटूल स्क्रिप्ट लिखता है। मुझे configure.ac स्क्रिप्ट को अनुकूलित करना पड़ा, ताकि कॉन्फ़िगर किसी भी सिस्टम पर एक निश्चित लाइब्रेरी पा सके। लेकिन यह बहुत बुरा नहीं था। इस तरह से ऑटोकॉन्फ स्क्रिप्ट प्राप्त करना अच्छा है, क्योंकि मुझे उन्हें अपने आप सब कुछ लिखना नहीं है, और जब मैं अपनी परियोजना को वितरित करता हूं तो ऐसा लगता है कि मैंने उन्हें लिखा था, और उपयोगकर्ता अभी भी मेरे प्रोजेक्ट को ईश्वर- साथ

./configure && make && make install 
+0

ऐसा लगता है कि इस परियोजना को अब सक्रिय रूप से बनाए रखा नहीं गया है? – sivabudh

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