2011-03-28 5 views
13

मैं थोड़ी देर के लिए omniCppComplete + ctags का उपयोग कर रहा हूं, और कोड पूर्ण होने पर और सुधार करना चाहता हूं।gccsense बनाम clang_complete

यहां दिए गए सुझाव के अनुसार [1], gccsense और clang_complete विकल्प प्रतीत होते हैं। हालांकि, मुझे यकीन नहीं है कि कौन सा बेहतर है। उनके प्रदर्शन पर कोई विचार?
धन्यवाद!

अद्यतन: मैंने clang_complete की कोशिश करने के बाद, मुझे पूर्णता की गति बेहद अस्वीकार्य पाया। मैंने फिर libclang.dylib का उपयोग करके इसे आजमाया, जो बहुत तेज़ हो जाता है लेकिन फिर भी एक को लग रहा है। मुझे लगता है कि मुझे अब ctags के साथ रहना चाहिए।

उत्तर

21

आपको शायद clang_complete का उपयोग करना चाहिए, gccsense नहीं।

यहां मुख्य बिंदु दोनों की वास्तुकला है। दोनों समाधानों के पीछे विचार बहुत समान है: आप आंतरिक कंपाइलर (जीसीसी) जानकारी (सार सिंटेक्स ट्री) तक पहुंच के बिना सामान्य सी ++ पूरा नहीं कर सकते हैं, जबकि जीसीसी आपको इसके लिए पर्याप्त इंटरफेस प्रदान नहीं करता है। हालांकि इस जानकारी तक पहुंचने का कार्यान्वयन हिस्सा यहां काफी अलग है: gccsense एक प्रकार का "हैक" है - यह जीसीसी का एक कस्टम निर्माण है जो इसे प्लगइन को प्रदान करने वाले फ्यूचर के लिए निरंतर जानकारी संग्रहीत करने में सक्षम है, जबकि क्लैंग_कंपलेट वैकल्पिक रूप से वैकल्पिक तरीके से जाता है कंपाइलर: क्लैंग, जो सृजन के मुख्य लक्ष्यों में से एक था, वास्तव में बाह्य उपकरणों द्वारा आसानी से सुलभ एएसटी बना रहा था।

तो, gccsense का उपयोग करने के मामले में आपको अपने कोड को एक प्रकार के कस्टम जीसीसी कंपाइलर के साथ संकलित करने की आवश्यकता होगी, जो पहले से ही थोड़ा पुराना है (gccsense gcc 4.4 का उपयोग कर रहा है) और अब सुविधा में डेवलपर के समर्थन की आवश्यकता होगी । इसके विपरीत, clang_complete क्लैंग कंपाइलर पर इतना निर्भर नहीं करता है, यह इसे बाहरी उपकरण के रूप में उपयोग करता है।

प्रदर्शन के लिए: फिर क्लैंग जीसीसी से तेज होने के लिए डिज़ाइन किया गया था और यह है। मैकोज़/लिनक्स की तुलना में विंडोज पर Clang_complete थोड़ा धीमा हो सकता है, हालांकि उस समय विंडोज़ के लिए gccsense भी संकलित नहीं किया जा सकता है।

+0

यह बहुत ही व्यावहारिक है। मैं clang_complete एक कोशिश देने जा रहा हूँ। सलाह के लिए धन्यवाद! –

+1

वैसे मुझे ऐसा नहीं लगता है। मैंने अभी gccsense की कोशिश की है, और यह आपके कोड पर काम करने से पहले कुछ भी संकलित किए बिना पूरा करता है। इंस्टॉल करने और उपयोग करने में आसान। CEDET का उपयोग करके, यह boost :: mutex के अंदर फ़ंक्शंस नहीं ढूंढ सकता है, लेकिन gccsense इसे देख सकता है। हालांकि, नकारात्मकता यह है कि gccsense "" पर पूरा नहीं हो सकता है। या ">", इसलिए मैं उस समस्या को CEDET पर छोड़ दूंगा, और जब सीईडीईटी अपना काम नहीं कर सकता है, तो मैं gccsense (निश्चित रूप से कीबाइंडिंग के साथ) का उपयोग करता हूं। – Amumu

+0

उत्तर के लिए धन्यवाद! – rdo

2

जीसीसीएसेंस विंडोज पर बनाया जा सकता है। जीसीसी 4.5.2 यहाँ पर मेरी पैच देखें: http://forums.codeblocks.org/index.php/topic,13812.msg94824.html#msg94824

मैं स्वीकार करते हैं कि gccsense सिर्फ जीसीसी के लिए एक हैक है, लेकिन बजना उसकी शुरूआत से काफी बेहतर डिजाइन है।

मुझे उम्मीद है कि कोई भी जीसीसी/जीसीसीएस में सुधार कर सकता है।

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