2013-01-07 17 views
10

की मैं निम्नलिखित मामले में कुछ सलाह की जरूरत है:SCons या CMake बजाय qmake

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

अभी प्रत्येक स्रोत फ़ाइल को एक बहुत बड़े निष्पादन योग्य में संकलित किया गया है, यह पैक किया गया है (मैन्युअल रूप से) और डाउनलोड क्षेत्र में भेजा गया है। सब ठीक है।

लेकिन जिस दिशा का मैं लक्ष्य रख रहा हूं, वह इस तरीके को मॉड्यूलरिज़ करना है कि प्रत्येक "फीचर" को साझा लाइब्रेरी में संकलित किया जाएगा और उपयोगकर्ता (डेवलपर) उन घटकों को चुनने में सक्षम होगा जो वह संकलित करना चाहते हैं। इन "फीचर्स" को स्रोत पेड़ में निर्देशिकाओं में रखा गया है (उदाहरण के लिए: query_builder, reverse_engineer, mysql_DB_support, version_managemen निर्देशिका, आदि ...) और जब उपयोगकर्ता एप्लिकेशन बनाता है तो वह बिल्ड बिल्डर के साथ किसी एप्लिकेशन को संकलित करने के लिए बिल्ड सिस्टम को बस बताता है , और mysql, लेकिन कोई रिवर्स इंजीनियर नहीं है और इस मामले में बिल्ड सिस्टम निर्दिष्ट निर्देशिका से स्रोत फ़ाइलों को जोड़ता है और इससे एक lib बनाता है।

  • खिड़कियों का निर्माण, लिनक्स निर्माण
  • वैकल्पिक पैकेज का निर्माण (deb, आरपीएम) क्यूटी और संभवतः QT5
  • कई निष्पादनयोग्य के लिए
  • समर्थन (जीयूआई:

    मैं भी इस तरह के रूप में अन्य आवश्यकताओं है क्लाइंट, सीएलआई क्लाइंट)

कुछ "बाजार अनुसंधान" के बाद मैं सीएमके और स्कैन के साथ दो संभावित सिरे के रूप में समाप्त हुआ उपजी मैं उपयोग कर सकता हूँ। मेरे पास कुछ सीएमके अनुभव है, और कुछ अजगर का अनुभव है, लेकिन अभी तक कोई स्कैन नहीं है।

लेकिन मुझे नहीं पता कि मेरे मामले के लिए कौन सा सबसे अच्छा है, यही वह जगह है जहां मुझे आपकी मदद चाहिए। क्या आप विस्तारित कर सकते हैं कि मुझे किस का उपयोग करना चाहिए? और यदि आप मानते हैं कि मेरी आवश्यकताओं qmake के साथ प्राप्त करने योग्य हैं तो कृपया मुझे यह भी बताएं,

चीयर्स, एफ।

+1

मैं इसके लिए सीएमके की सिफारिश करता हूं।यह विंडोज़ पर क्यूटी के साथ बहुत अच्छा काम करता है (मैंने मूल रूप से काम और घर पर प्रत्येक परियोजना के लिए 2008 से इसका उपयोग किया है) और लिनक्स और आपके द्वारा वर्णित वैकल्पिक घटकों का समर्थन करता है। हालांकि इसके साथ में मैंने स्कोन का उपयोग नहीं किया है, इसलिए मैं तुलना नहीं कर सकता। – drescherjm

उत्तर

7

इस प्रश्न का कोई सही जवाब नहीं है, और यह आमतौर पर व्यक्तिगत वरीयताओं करने पर निर्भर करता, तरह-तरह की vi बनाम Emacs (सही जवाब, vi है पाठ्यक्रम :)

आप पेशेवरों का अध्ययन करने और चाहिए प्रत्येक के विपक्ष और मूल्यांकन करें कि आपकी आवश्यकताओं और आवश्यकताओं के अनुरूप कैसे हैं।

मैं स्कॉन्स के आंशिक हूं, मुख्य रूप से क्योंकि मैं सीएमके सिंटैक्स खड़ा नहीं कर सकता, लेकिन यह एक व्यक्तिगत वरीयता है।

CMake

पेशेवरों: यहाँ कुछ पेशेवरों और प्रत्येक के विपक्ष के रूप में मैं इसे देख रहे हैं

  • qmake की तरह, यह है एक makefile जनरेटर
  • CMake पर विचार व्यापक रूप से उपयोग किया जाता है, इसलिए बहुत सारे संदर्भ और सहायता उपलब्ध हैं
  • क्या एक जीयूआई है (मैं इसे स्वयं नहीं जानता नीचे दिए गए Calvin1602 टिप्पणियाँ)

विपक्ष के आधार पर:

  • CMake अपनी ही, आविष्कार वाक्य रचना है, जो कई महसूस (अपने आप को शामिल) सहज नहीं है।
  • 2 कदम निर्माण प्रक्रिया, पहली Makefiles संकलन
  • इसकी असंभव के बगल में बनाते हैं, तो वास्तव में प्रदर्शन उत्पन्न Makefiles पढ़ने के लिए

SCons

सकारात्मक:

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

विपक्ष:

  • SCons के रूप में व्यापक रूप से CMake के रूप में नहीं किया जा सकता है, लेकिन अभी भी उपलब्ध समर्थन के बहुत सारे है।
  • प्रोजेक्ट के आकार के आधार पर, स्कॉन्स स्मृति का बहुत उपयोग कर सकते हैं, क्योंकि यह सभी बिल्ड स्क्रिप्ट को पार करता है और वास्तव में कुछ भी संकलित करने से पहले स्मृति में निर्भरता पेड़ बनाता है। हालांकि यह अधिक सटीक निर्भरता जांच के लिए अनुमति देता है।
+0

मैं जोड़ता हूं कि सीएमके में एक शानदार जीयूआई है जिसमें आप चुन सकते हैं कि आप कौन से हिस्सों को संकलित करना चाहते हैं। – Calvin1602

+0

@ कैल्विन 1602 मुझे यह नहीं पता था। सीएमके का जीयूआई हिस्सा है, या यह एक अतिरिक्त आवेदन है? क्या वह जीयूआई विंडोज और लिनक्स दोनों पर काम करता है? – Brady

+0

यह सीएमके का हिस्सा है। लिनक्स से, cmake-gui चलाएं। विंडोज और मैक से, आइकन = पर क्लिक करें।)। सीसीएमक भी है, गुई के कमांड लाइन समकक्ष। यहाँ से आप किसी भी प्रकार की कोई भी चर सेट कर सकते हैं (वे CMakeLists.txt घोषित किये गए हैं) – Calvin1602