C ++ बिल्ड सिस्टम - क्या उपयोग करें? [बन्द है]


136

मैं C ++ में एक नया प्रोजेक्ट शुरू करने पर विचार कर रहा हूं - बस अपने समय में शुरू में - और मैं उपलब्ध सिस्टम की जांच कर रहा हूं जो उपलब्ध हैं। ऐसा प्रतीत होता है कि उत्तर "कई हैं, और वे सभी भयानक हैं"।

इसके लिए विशेष रूप से मुझे जो सुविधाएँ चाहिए वो हैं:

  1. C ++ 11 समर्थन
  2. क्रॉस प्लेटफॉर्म (मुख्य लक्ष्य के रूप में लिनक्स, लेकिन कम से कम विंडोज पर भी निर्माण करने में सक्षम)
  3. निर्णय इकाई परीक्षण समर्थन
  4. कोड को अलग करने के लिए कई मॉड्यूल के लिए समर्थन
  5. कोड जनरेशन के लिए सहायता (asn1c या प्रोटोबुफ़ का उपयोग करना - अभी तक 100% सुनिश्चित नहीं है)
  6. संभालने में आसान

अब, मुझे पता है कि मैं सीएमके और ऑटोटूलस का उपयोग करने वालों में से 1-4 आसानी से कर सकता हूं। शायद SCons और Waf के साथ भी और दूसरों के जोड़े के साथ भी। समस्या यह है कि मैंने कभी भी काम नहीं किया है कि कोड का उपयोग सही तरीके से कैसे किया जाए - यह स्रोत फाइलें हैं जो तब तक मौजूद नहीं होती हैं जब तक कि निर्माण प्रक्रिया पहले नहीं चलती है, इसलिए स्रोत फाइलें जो बिल्ड सिस्टम को निष्पादन योग्य कोड में बदलने में सक्षम होनी चाहिए। लेकिन वास्तव में निर्माण शुरू होने तक के बारे में नहीं पता है ... (ASN1C विशेष रूप से दर्जनों हेडर और स्रोत फ़ाइलें उत्पन्न करता है जो एक साथ काम करने में सक्षम होना चाहिए, और उत्पन्न फ़ाइलों का वास्तविक सेट आपकी एएसएन फ़ाइल की सामग्री पर निर्भर करता है) इस तथ्य को भी कि इनमें से कोई भी विशेष रूप से बनाए रखने में आसान नहीं है - सीएमके और ऑटोटूलस के पास स्क्रिप्ट का अपना विशाल सेट है जिसे आपको काम करने के लिए उन्हें प्रबंधित करने की आवश्यकता है,

तो - क्या बिल्ड सिस्टम कुछ इस तरह के लिए सिफारिश की है? या मैं अभी के लिए फ़ाइलें और शेल स्क्रिप्ट बनाने के साथ फंस जाएगा?


11
"ऐसा प्रतीत होता है कि उत्तर 'कई हैं, और वे सभी भयानक हैं" मेरी धारणा भी है (' मेरी बात से भयानक 'के अलावा); मैं इन जैसे शब्दों के साथ बहुत अधिक सामान्यीकरण करना पसंद नहीं करता हूं )। मैंने वास्तव में उसी कारण से अपना खुद का सेट किया, और यह उम्मीद से बेहतर काम किया क्योंकि यह वही करता है जो मैं चाहता हूं, और मैं हमेशा कैसे काम करना चाहता था। कुछ कम समय लेने वाली चीज़ के लिए, आपको संभवतः मौजूदा टूल से गुजरना होगा और ऐसा कोई चुनना होगा जो आपको दूसरों की तुलना में कम सिरदर्द देता हो।
क्रिश्चियन स्टाइबर

4
टप की कोशिश करो ।
केरेक एसबी


8
बिल्ड सिस्टम से आपको किस तरह के C ++ 11 सपोर्ट की उम्मीद है? यह कुछ ऐसा है जो आप संकलक से प्राप्त करते हैं, बिल्ड सिस्टम पार्स नहीं करता है या यहां तक ​​कि वास्तविक स्रोत फ़ाइलों को नहीं पढ़ता है, बस उन्हें पास करता है जो कोई भी उन्हें ज़रूरत है, नहीं?
बरूच

5
सच है, लेकिन संकलक को C ++ 11 समर्थन का उपयोग करने के लिए बताना आसान होगा। g ++ को एक झंडे की जरूरत है, एक अलग सेट को दबोचें, msvc को स्पष्ट रूप से किसी और की जरूरत नहीं है। इसके अलावा, यह पता लगाने के लिए समर्थन कि c ++ 11 क्या सुविधाएँ उपलब्ध हैं, उपयोगी होगी क्योंकि यह भी संकलक के बीच भिन्न होती है ...
ग्राहम

जवाबों:


117

+1 के लिए, "कई, और वे भयानक हैं।"

लेकिन, "सबसे अमीर" और "सबसे स्केलेबल" शायद सीएमके है , जो मेकफाइल-जनरेटर है (देशी MSVC ++ *.proj/ भी उत्पन्न करता है *.sln)। अजीब सिंटैक्स, लेकिन एक बार जब आप इसे सीख लेते हैं, तो यह आपको अलग-अलग प्लेटफार्मों के लिए अच्छी तरह से निर्माण करने की अनुमति दे सकता है। अगर मैं "शुरू किया-ताजा", तो मैं शायद उपयोग करूँगा CMake। इसे आपकी सूची को संभालना चाहिए, हालांकि आपकी "कोड-जेनरेशन" बिल्ड सिस्टम से परे "ए-लाइफ-ऑफ-इट्स-ओन" को ले सकती है जो आप करना चाहते हैं। (निचे देखो।)

सरल परियोजनाओं के लिए, QMake जनरेटर ठीक है (आपको QMake का उपयोग करने के लिए Qt पुस्तकालयों का उपयोग करने की आवश्यकता नहीं है)। लेकिन, आप "सरल" - कोड पीढ़ी और "अतिरिक्त-चरणों" का वर्णन नहीं कर रहे हैं, जिसका अर्थ है कि आप CMakeअपने स्वयं के एक्सटेंशन के लिए एक समृद्ध एपीआई के साथ शायद चाहते हैं या कुछ भी, जैसे Scons(या Waf)।

हम काम में स्कैन का उपयोग करते हैं। यह "बुलेट-प्रूफ-बिल्ड" का उत्पादन करता है, लेकिन यह वास्तव में धीमा है। कोई अन्य प्रणाली बुलेट-प्रूफ के रूप में नहीं होगी Scons। लेकिन, यह धीमा है। यह पायथन में लिखा गया है और हमने अपने "कार्यक्षेत्र-संगठन" (जहां हम केवल मॉड्यूल निर्भरता को निर्दिष्ट करते हैं) के लिए इंटरफ़ेस बढ़ाया है, और यह Sconsडिजाइन आशय (पायथन के माध्यम से इस प्रकार का विस्तार) का हिस्सा है। सुविधाजनक है, लेकिन बिल्ड धीमी है। आपको बुलेट-प्रूफ बिल्ड मिलता है (कोई भी डेवलपर बॉक्स अंतिम रिलीज़ कर सकता है), लेकिन यह धीमा है। और, यह धीमा है। यह मत भूलो कि यदि आप उपयोग करते हैं Scons, हालांकि, यह धीमा है। और, यह धीमा है।

यह सोचकर मुझे बुरा लगता है कि वर्ष 2000 के एक दशक बाद भी हमारे पास उड़ने वाली कारें नहीं हैं। हमें शायद उन्हें पाने के लिए एक और सौ साल या कुछ और इंतजार करना होगा। और, हम तब शायद अपनी उड़ने वाली कारों में चारों ओर उड़ रहे होंगे जो अभी भी गंदे निर्माण प्रणालियों के साथ निर्मित हो रहे हैं।

हाँ, वे सभी भयानक हैं।

[कोड सृजन के बारे में]

Scons"चरणों" पर काम करता है, और वे "कुछ हद तक स्थिर" हैं। यह कोड का निर्माण कर सकता है जो निर्माण के हिस्से के रूप में उत्पन्न होता है (लोग इसे कुछ अलग-अलग तरीकों से कर रहे हैं), लेकिन इसे "कुछ बहुत अन-स्कन्स-लाइक" के रूप में वर्णित किया गया है।

यदि यह सरल है "कुछ फ़ाइलों को प्रीप्रोसेस करें और सोर्स फाइल्स जेनरेट करें", तो कोई भी बिगगी (आपके पास बहुत सारे विकल्प नहीं हैं, और यही कारण है कि qmake- फ़ाइलों के mocप्रीप्रोसेसिंग के लिए लिखा गया था *.hpp/*.cpp)।

हालाँकि, यदि आप "भारी-भरकम" तरीके से ऐसा कर रहे हैं, तो आपको अपनी स्क्रिप्ट की आवश्यकता होगी। उदाहरण के लिए, हमारे पास डेटाबेस के रूप में निर्माण करने वाली स्क्रिप्ट का एक हिस्सा था और "लेयर्स" (पारंपरिक 3-स्तरीय अनुप्रयोग विकास में) के बीच इंटरफेस के लिए C ++ कक्षाएं उत्पन्न कीं। इसी प्रकार, हमने IDLs के माध्यम से सर्वर / क्लाइंट स्रोत कोड उत्पन्न किया, और कई क्लाइंट / सर्वर को अलग-अलग संस्करणों (एक ही "क्लाइंट" या "सर्वर" के साथ) चलाने की अनुमति देने के लिए एम्बेडेड संस्करण की जानकारी दी। उत्पन्न स्रोत कोड के बहुत सारे। हम "दिखावा" कर सकते हैं जो "बिल्ड-बिल्ड-सिस्टम" है, लेकिन वास्तव में, यह "कॉन्फ़िगरेशन प्रबंधन" के लिए एक गैर-तुच्छ-अवसंरचना है, जिसका कुछ भाग "बिल्ड-सिस्टम" है। उदाहरण के लिए, इस प्रणाली को "टेक-डाउन" और "


37
मुझे स्कैन भी पसंद हैं - लेकिन मुझे लगता है कि यह धीमा है।
लोथार

1
कोड जनरेट होने पर वैकल्पिक दूसरा चरण करने के लिए आप मेकफाइल रैपर के साथ कोड जनरेशन को संभालने के लिए CMake प्राप्त कर सकते हैं। मैं पूर्ण निर्भरता ट्रैकिंग का समर्थन करने में सक्षम था, एक री-सीमेक को ट्रिगर करने के लिए कोड जनरेशन के बाद जल्दी बाहर निकलना, आदि देखें: javaglue.com/javaglue.html#tag:JavaGlue और code.google.com/p/javaglue
sdw

3
लगभग 2 साल, क्या आप अभी भी SCons को धीमा मानते हैं? जब मैं एक बिल्ड सिस्टम का चयन कर रहा था, तो मुझे यह पता चला और इसने SCons के साथ जाने के मेरे निर्णय में योगदान दिया।
JBentley

2
@, यह सच है, लेकिन यह भी धीमा है।
चार्ली

2
इसे देखने वाले किसी को भी मेसन (जो निंजा का उपयोग करता है) पर विचार करना चाहिए।
मैथ्यू डी। शोलेफील्ड

33

आप अब ग्रेड का उपयोग कर सकते हैं: https://docs.gradle.org/current/userguide/native_software.html

ऐसा लगता है कि मैं मूल रूप से इसे पोस्ट करने के बाद से वर्षों में काफी परिपक्व हो गया हूं। यह कहते हुए पृष्ठ कि परियोजना "इनक्यूबेटिंग" है गायब हो गई है, लेकिन मुझे इस स्थिति को हटाने की कोई आधिकारिक घोषणा नहीं मिल रही है।


मैं ग्रैडल के साथ सहमत होगा। ग्रेडल को स्केलेबल बनाया गया है। हालाँकि, यह प्लगइन कार्यान्वयन पर निर्भर करता है कि यह कितना तेज़ है। खुद को ढाल के लिए कुछ ओवरहेड भी है। यह भी ध्यान रखें, कि कुछ प्लगइन्स को आपके उपयोग के मामलों के लिए अनुकूलित करने की आवश्यकता हो सकती है।
जेई 42

सी + + का समर्थन करने में प्रवीन की दिलचस्पी देखना दिलचस्प है। आशा है कि वे c ++ प्रोजेक्ट्स के लिए एक अच्छी और ठोस बिल्डिंग सिस्टम का निर्माण करते हैं जो हम सभी गायब हैं।
hbobenicio

@squid धन्यवाद, अपडेट किया गया।
नैट ग्लेन

1
ग्रेडल अभी तक सरल शक्तिशाली है। कोई अजीब वाक्यविन्यास, एक एकल gradle.build फ़ाइल अक्सर कई निष्पादन योग्य आउटपुट (मुख्य, परीक्षण, आदि) के साथ एक पूरी परियोजना बनाने के लिए पर्याप्त नहीं है। सभी स्रोत निर्देशिकाओं के बीच कोई फ़ाइल डंपिंग नहीं। वर्जनिंग के लिए सुपर अनुकूल।
Overdrivr

1
मैंने पिछले दो दिनों में ग्रैडल के साथ युद्ध करते हुए बिताया है, बस एक "हैलो वर्ल्ड" लाइब्रेरी, ऐप और gtests बनाने की कोशिश कर रहा हूं, और मैं यह नहीं कह सकता कि मैं एक नए प्रोजेक्ट के लिए सिफारिश कर सकता हूं। सभी उपकरण हो सकते हैं, लेकिन प्रलेखन (संदेह का लाभ देते हुए) नहीं है। हो सकता है कि आप में से जो इसे व्यवहार्य पाते हैं वे आपके पसंदीदा संसाधनों की ओर इशारा कर सकें?
jwm

16

मैंने ये पाया, मैंने अभी तक इन सभी का व्यक्तिगत रूप से उपयोग नहीं किया है:

निंजा , एक छोटी बिल्ड सिस्टम गति पर केंद्रित है। Google अब Make: लिंक के बजाय एंड्रॉइड बनाने के लिए निंजा का उपयोग करता है ।

एक शक्तिशाली और तेज निर्माण प्रणाली को हिलाएं

Tup , एक उच्च प्रदर्शन बिल्ड सिस्टम है। एल्गोरिथम आधारित डिजाइन। टप का विश्लेषण

सभी अब क्रॉस-प्लेटफॉर्म हैं और विंडोज का समर्थन करते हैं। मुझे आपकी बाकी आवश्यकताओं के बारे में अभी तक यकीन नहीं है, फिर से, मुझे अभी तक उन्हें स्वयं परीक्षण करना है। उनका उपयोग वाणिज्यिक विकास में किया जा रहा है, CIG ने निंजा को उठाया। मैंने प्रोजेक्ट जनरेटर के साथ निंजा की आसानी और गति का उपयोग किया है। पहले दो स्कैन, एंट, आदि के समान हैं।


1
टुप प्रतीक लुकअप को गड़बड़ कर देगा, किसी अन्य बिल्ड सिस्टम के साथ अच्छी तरह से नहीं खेलता है (बिल्कुल, वास्तव में), यादृच्छिक आउटपुट के साथ अच्छी तरह से नहीं खेलता है (जैसे कि javacआंतरिक कक्षाओं के साथ उत्पन्न कक्षाएं, जो class$1.classफाइलों में अलग हो जाती हैं ), खराब तरीके से लिखा गया है और यह हासिल करने के लिए सिस्टम हैक का उपयोग करता है। यह छोटे सिस्टम के लिए बहुत अच्छा है; बड़ी परियोजनाओं के लिए अचूक।
Qix - MONICA WAS MISTREATED

@Qix: क्या आप आउटपुट को अपने रिपॉजिटरी से अलग नहीं रख सकते?
केरेक एसबी

1
@KerrekSB आप कर सकते हैं, लेकिन यह प्रतीक लुकअप के साथ समस्या नहीं है। TUP FUSE का उपयोग करता है , और अपने स्वयं के मिडलवेयर को इसमें माउंट करता है .tup/mnt। यह तब बिल्ड फ़ोल्डर के सभी प्रोग्राम को (अर्थात .tup/mnt/@tupjob-XXXXX) रीडिंग / राइट को मॉनिटर करने के लिए वर्किंग डायरेक्टरी के रूप में रन करता है , बिल्ड कॉन्फ़िगरेशन को लागू करता है। यह अच्छी तरह से काम करता है, जब तक कि पथ बिल्कुल संग्रहीत नहीं किया जाता है (यानी प्रतीकों के साथ)। जब आप एक बाइनरी संकलित करते हैं, तो प्रतीक पथ बाइनरी में ही संग्रहीत होता है। इसका मतलब है कि जब GDB प्रतीकों को लोड करने की कोशिश करता है, तो यह उस tupjobमार्ग की तलाश करता है, जो त्रुटियों का कारण नहीं है।
Qix - MONICA WAS ने

ट्यूप और निंजा दोनों ही निम्न स्तर के उपकरण हैं, जैसे कि मेक की तुलना में कम या कभी कम। वे C ++ के अनुरूप नहीं हैं। मैं इन उपकरणों के निर्माण सिस्टम को अपने आप से कॉल नहीं करूंगा क्योंकि वे महत्वपूर्ण उच्च-स्तरीय विशेषताओं को बहुत याद कर रहे हैं जो कि वास्तविक बिल्ड सिस्टम जटिल वास्तविक विश्व परियोजनाओं से निपटने के लिए प्रदान करते हैं। इनमें से कुछ सिस्टम निंजा का बैक-एंड के रूप में उपयोग कर सकते हैं।
जोहान बोउले

11

स्कैन बहुत अनुकूल और लचीली प्रणाली है, लेकिन आप सही कहते हैं, लोथर, यह वास्तव में धीमा है।

लेकिन पायथन में लिखे गए कार्यक्रमों के प्रदर्शन को बढ़ाने का एक तरीका है। JIT का यह प्रयोग। सभी ज्ञात परियोजनाओं में से, PyPy एक बहुत शक्तिशाली, तेजी से विकसित और प्रेरित JIT- समर्थित - पायथन 2.7 कार्यान्वयन है। Python 2.7 के साथ PyPy संगतता बस आश्चर्यजनक है। हालाँकि, Scons PyPy संगतता wiki पर असमर्थित प्रोजेक्ट के रूप में घोषित किया गया । दूसरी ओर, वाफ़ , पायथन-आधारित ऑटोटूलस सक्सेसर के रूप में तैयार किया गया, जो PyPy बुनियादी ढांचे द्वारा पूरी तरह से समर्थित है। मेरी परियोजनाओं में PyPy के संक्रमण में विधानसभा की गति 5-7 गुना बढ़ गई है। आप PyPy की प्रदर्शन रिपोर्ट देख सकते हैं

आधुनिक और अपेक्षाकृत तेजी से निर्माण प्रणाली के लिए Waf अच्छा विकल्प है।


यह ध्यान देने योग्य है कि अब लिंक किए गए विकी पेज पर स्कोन को "कम्पेटिबल" के रूप में चिह्नित किया गया है, इसलिए स्पष्ट रूप से यह अब विट पपी काम करता है।
नकली नाम

8

Google निर्माण प्रणाली एक अच्छा विकल्प है: http://bazel.io/


3
"क्रॉस प्लेटफ़ॉर्म (मुख्य लक्ष्य के रूप में लिनक्स, लेकिन कम से कम विंडोज पर भी निर्माण करने में सक्षम)"। बज़ेल के अक्सर पूछे जाने वाले प्रश्न कहते हैं, "हम वर्तमान में सक्रिय रूप से विंडोज समर्थन में सुधार पर काम कर रहे हैं, लेकिन यह अभी भी प्रयोग करने योग्य होने से है।"
माइकल Mrozek

3
मुझे यकीन नहीं है कि यह सिस्टम स्वयं है या प्रोजेक्ट सेट करने वाला लड़का है, लेकिन मुझे इसके काम का उपयोग करते हुए पीठ में बड़ा दर्द हुआ। यह बहुत ही अनम्य है (इस अर्थ में कि यह केवल सामान करने के एक तरीके का समर्थन करता है, अक्सर सबॉप्टीमल, यदि खौफनाक नहीं है), पर्याप्त शक्तिशाली नहीं है, खराब दस्तावेज (एक तरफ मूल मामले), बहुत कम समुदाय है, इसलिए स्टैकओवरफ़्लो से यह उम्मीद न करें कि वह आपको बचाने आएगा। , अपने आप में काफी हद तक निर्भरता, अधिकांश प्रणालियों, आदि, आदि पर आईडीई के साथ अच्छा नहीं खेलते हैं, इसलिए जब तक आप Google के प्रशंसक नहीं हैं - इससे दूर रहें (btw इस का एक फेसबुक संस्करण है, जिसे बक कहा जाता है - फेसबुक प्रशंसकों के लिए)
स्लाव

अरे, मुझे 6 हफ्ते बिताने के बाद सीएमके काम करने की कोशिश करना बहुत आसान लगा। मैं चाहता था कि यह 3 पार्टी पर निर्भरता को डाउनलोड करे और उन्हें संकलित करे (जैसा कि मुझे अजगर और जावास्क्रिप्ट से अच्छे उपकरण बनाने के लिए इस्तेमाल किया गया था)। इसने इसे आसान बना दिया है, लेकिन ड्रा बैक है कि आपको 3 पार्टियों के लिए अपनी खुद की bazel फ़ाइलों को लिखना पड़ सकता है जो इसका समर्थन नहीं करते हैं। उन्हें i'ze रेकन में इन्हें स्टोर करने के लिए एक केंद्रीय रेपो की आवश्यकता होती है।
CpILL

6

मैंने SCons का इस्तेमाल किया और इस बिल्ड सिस्टम से प्रभावित हूं। अजगर अजगर और अजगर द्वारा ही एक्स्टेंसिबल है - यह बहुत अच्छा है, क्योंकि अजगर के पास वह सब है जिसकी आपको आवश्यकता है, बस तर्क को कोड करें, सभी निम्न-स्तरीय कार्यक्षमता SCons और Python में पहले से ही कार्यान्वित है और crossplatform है। यदि आपके पास अच्छा प्रोग्रामिंग कौशल है, तो आपकी बिल्ड स्क्रिप्ट सही और आसान दिखेंगी।

बनाओ, CMake और इसी तरह की बिल्ड सिस्टम मैक्रोज़ के कचरा के रूप में लगती है। Waf SCons एनालॉग है। मैं Waf की कोशिश कर रहा हूं, लेकिन SCons अधिक मित्रवत होंगे और इसलिए मैं SCons के साथ रहा।

भीड़ की राय से SCons बहुत धीमा है, लेकिन एक परियोजना के बीच में मुझे बिल्ड स्पीड से मेक और SCons के बीच कोई अंतर नहीं दिखाई दिया। इसके बजाय, SCons ने अच्छी तरह से समानांतर बिल्ड के साथ काम किया है, जबकि इससे बड़ी परेशानियां हैं।

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

एक साधारण प्रोजेक्ट के लिए CMake भी एक अच्छा विकल्प है।


3
यहां मेरी समस्या यह है कि मैं खराब हो गया हूं। मैं पेशे से जावा डेवलपर हूं, और जावा दुनिया में ग्रैडल जैसे उपकरण उस तरह के उपकरण हैं जिन्हें मैं वास्तव में सी ++ विकास के लिए पसंद करता हूं। मैं एक एकल लाइन बिल्ड फ़ाइल का उपयोग करके, कोई बाहरी निर्भरता के साथ एक ग्रेड प्रोजेक्ट स्थापित कर सकता हूं। बस। मल्टी-मॉड्यूल परियोजनाएं जिनके पास कई निर्भरताएं हैं, अभी भी करना आसान है, और वास्तव में एक सरल सी ++ प्रोजेक्ट की तुलना में बहुत कम कॉन्फ़िगरेशन में वजन होता है ...
ग्राहम

मुझे अन्य पैकेज बनाने में समस्याएँ आईं, जो स्कैन का उपयोग करते हैं क्योंकि यह सिस्टम-कॉन्फ़िगरेशन झंडे का उपयोग नहीं करता है, जैसे कि मैं dirs और -L लाइब्रेरी डायर शामिल हैं। यह CFLAGS नहीं लेगा, आपको इसे सही स्थान पर देखने के लिए अक्सर प्रत्येक स्कॉन स्क्रिप्ट को संशोधित करना होगा।
ACIClic

5

बस मेरे सेंट जोड़ने के लिए: प्रीमियर

http://industriousone.com/premake

विकी पर एक समर्पित वेबपेज भी है ।


2
दुर्भाग्य से Premake ओपी की आवश्यकताओं के अनुसार कोड पीढ़ी का समर्थन नहीं करता है। और मैं इकाई परीक्षण "सभ्य" के लिए इसके समर्थन को नहीं कहूंगा, हालांकि कुछ चीजें हैं जो आप कर सकते हैं।
ergosys

@ergosys मुझे लगता है कि चींटी का उल्लेख नहीं किया गया है, antसी / सी ++ का भी समर्थन करता है, देखें कि क्या यह आपके लिए अच्छा है, यह मेरे पास अंतिम नाम है, मैं सिर्फ इसके लिए Makefiles और Cmake का उपयोग करता हूं।
user827992

2

आप Ceedling का उपयोग कर सकते हैं । ध्यान दें, हालांकि यह इस समय केवल C का समर्थन करता है और यह लेखक की यूनिटी और CMock परीक्षण रूपरेखाओं को कसकर युग्मित करता है।

इसे सी ++ कंपाइलर और यूनिट टेस्टिंग / मॉकिंग फ्रेमवर्क के साथ काफी आसानी से फोर्क और संशोधित किया जा सकता है।

साथ ही टुप एक योग्य उल्लेख है। यह बहुत तेज़ है, लेकिन यह टेस्टिंग फ्रेमवर्क आदि के बारे में कुछ नहीं जानता है, जिसका अर्थ है कि आपको ट्यूप का उपयोग करके अपनी खुद की बिल्ड सिस्टम लिखना होगा। यदि आप टीडीडी करने की योजना बनाते हैं, तो ट्यूप शायद जाने का रास्ता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.