2016-03-23 7 views
5

मैं एक Clion सी ++ परियोजना निम्नलिखित संरचना है कि राशि में शामिल बाहरी निर्माण प्रणाली जिसके लिए इस समावेशन प्रारूप की आवश्यकता होती है। समस्या यह है कि यदि मैं शामिल हेडर में परिभाषित मेरी स्रोत फ़ाइल में फ़ंक्शन का उपयोग करता हूं, तो CLion कहता है कि "my_own.hpp नहीं मिल सकता" अगर मैं समावेशन पर होवर करने की कोशिश करता हूं।Clion इंडेक्सर कुछ हल नहीं होती परियोजना निर्देशिका

मैंने प्रोजेक्ट स्रोत या शीर्षलेख वाले निर्देशिका को चिह्नित करने का प्रयास किया लेकिन इससे इसे ठीक नहीं किया गया। कोई विचार?

+0

अपने सीएमके लिस्ट.txt –

उत्तर

10

आपको खुश होने के लिए CMakeLists.txt बनाने की आवश्यकता है। सभी स्रोत फ़ाइलों को घोषित करने के लिए पर्याप्त है, आपको अपने स्कोन (या किसी अन्य निर्माण प्रणाली) को सेमेक में परिवर्तित करने की आवश्यकता नहीं है।

आपको हाथ से CMakeLists.txt लिखना भी नहीं है, आप इसे करने के लिए CLION से पूछ सकते हैं: File | Import project ... | और उसके बाद अपनी प्रोजेक्ट वाली निर्देशिका पर इंगित करें।

अब जेनरेट CMakeLists.txt संपादित करें और सीएलएसी कमांड को जोड़ने के लिए कहें कि इसमें शामिल है (वास्तव में कंपाइलर को बताने के लिए, और CLion उस जानकारी का पुन: उपयोग करेगा)।

के बाद से अपनी स्रोत फ़ाइल #include "my_includes/my_own.hpp" के रूप में शामिल हैं का उपयोग करें, आप निर्देशिका my_includes युक्त आधार निर्देशिका CMake बताने की आवश्यकता:

include_directories(.) 

कहाँ डॉट CMakeLists.txt युक्त एक के रूप में एक ही निर्देशिका का मतलब है।

मैंने आपके लेआउट को पुन: पेश करने वाली परियोजना के साथ परीक्षण किया और my_src.cpp से मैं my_own.hpp पर जा सकता हूं।

फिर आपको बनाने के लिए आपको अभी भी कंसोल में स्कैन का उपयोग करना होगा। एक cmake कमांड, add_custom_target() जोड़ना भी संभव है जो आपके स्कोन (या आपके मेक, या जो भी) को कॉल करेगा, ताकि आप CLION से बिल्ड त्रुटियों पर नेविगेट कर सकें।

+0

धन्यवाद, यह काम करता है! – CPayne

+0

मेरे पास एक समान समस्या थी, इसमें शामिल हैं- डायरेक्टरीज जो मुझे चाहिए था। मुझे कुछ अलग-अलग जोड़ना पड़ा, लेकिन अब यह बहुत अच्छा काम करता है। – njfife

0

यह सीएमके-आधारित परियोजना सीएलओएन में सही ढंग से खोलने के लिए होना चाहिए। यदि आप सीएमके के लिए नए हैं तो सीएमके मूलभूत ट्यूटोरियल देखें: https://www.jetbrains.com/help/clion/2016.1/quick-cmake-tutorial.html

+1

पोस्ट करें, भले ही मैं अपने निर्माण (केवल एससीओएनएस) के लिए सीएमके का उपयोग नहीं कर रहा हूं, सीएमके परियोजना होने का एकमात्र तरीका सीएलओएन को पता चलेगा कि कुछ फाइल कहां देखना है? – CPayne

+0

हां, इसलिए यदि हम सीएमके का उपयोग करते हैं, तो हम कुछ नमूने चुनते हैं: 1. जब कोड जनरेशन काम कर रहा है, तो हम कंपाइलर में सुविधा उपलब्धता की जांच करते हैं, जैसे ओवरराइड निर्देश - CLion आपको यह सुझाव देगा केवल अपने सीएमके में सेट किए गए सभी विकल्पों के साथ कंपाइलर के मामले में टिकटें, इसका समर्थन करता है। इसका अर्थ है कम से कम सी ++ 11, और संकलक संस्करण को निश्चित रूप से इसका समर्थन करना चाहिए। 2. रीफैक्टरिंग का नाम बदलें, यह वास्तविक संदर्भ उपयोग की जांच करता है, पाठ का उपयोग नहीं करता है। – nastasiak2512

+0

ऐसा करने में सक्षम होने के लिए, CLION को आपके कोड के बारे में बहुत कुछ पता होना चाहिए। और यह कई चीजों पर निर्भर करता है: प्रोजेक्ट की स्रोत फाइलें, हेडर शामिल हैं और हेडर सर्च पथ, कंपाइलर फ्लैग, टूलचेन और प्लेटफॉर्म का इस्तेमाल किया गया है, कंपाइलर पूर्वनिर्धारित मैक्रोज़ और कुछ और। तो सीएलओएन इस सीएमके परियोजना मॉडल का विश्लेषण करता है ताकि यह सारी जानकारी वहां से प्राप्त हो सके, और फिर इसे पार्सिंग, रिजॉलिंग और अन्य सुविधाओं के लिए उपयोग किया जा सके। – nastasiak2512

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