CMake के बजाय CLion के लिए स्थानीय मेकफाइल का उपयोग करना


148

क्या सीएमके के बजाय कोड को संकलित करने के लिए स्थानीय मेकफाइल का उपयोग करने के लिए सीएलएएन को कॉन्फ़िगर करने का एक तरीका है? मुझे बिल्ड विकल्पों से इसे करने का तरीका नहीं मिल रहा है।

जवाबों:


142

अद्यतन: यदि आप CLION 2020.2 का उपयोग कर रहे हैं, तो यह पहले से ही मेकफाइल्स का समर्थन करता है। यदि आप एक पुराने संस्करण का उपयोग कर रहे हैं, तो पढ़ें।


हालांकि वर्तमान में केवल CMake समर्थित है, फिर भी आप makeअपने कस्टम के साथ CMake को कॉल करने का निर्देश दे सकते हैं MakefileCMakeLists.txtइन दो आदेशों में से एक को जोड़ने का संपादन करें :

जब आप CLionअपने कार्यक्रम को चलाने के लिए कहते हैं, तो यह इंगित की गई निर्देशिका में लक्ष्य के एक ही नाम के साथ एक निष्पादन योग्य खोजने की कोशिश करेगा PROJECT_BINARY_DIR। इसलिए जब तक आपकी makeफ़ाइल वह फ़ाइल जेनरेट करती है जहाँ CLionउम्मीद है, कोई समस्या नहीं होगी।

यहाँ एक काम कर उदाहरण है:

बताओ CLionकरने के लिए अपने $ (PROJECT_BINARY_DIR) पारित करने के लिएmake

यह नमूना है CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.4)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest COMMAND make -C ${mytest_SOURCE_DIR}
                         CLION_EXE_DIR=${PROJECT_BINARY_DIR})

CLion'sनिर्देशिका में निष्पादन योग्य उत्पन्न करने के लिए कहें

यह नमूना है Makefile:

all:
    echo Compiling $(CLION_EXE_DIR)/$@ ...
    g++ mytest.cpp -o $(CLION_EXE_DIR)/mytest

यह सब है, आप अपने प्रोग्राम की वर्किंग डाइरेक्टरी को भी बदलना चाह सकते हैं, क्योंकि यह तब लागू होता है जब आप अपनी डायरेक्ट्री के अंदर से रन बनाते हैं। इस संपादन के लिए:Run -> Edit Configurations ... -> mytest -> Working directory


मैंने अभी तक आपके उपरोक्त सुझाव की कोशिश नहीं की है, लेकिन क्या मैं ऐसा करने पर CLion के भीतर अपने C / C ++ कार्यक्रमों को निष्पादित कर पाऊंगा? (यह डिबगिंग प्रक्रिया को एक टन आसान बना देगा।)
hlin117

3
मैंने सत्यापित किया कि @ मोंडकिन समाधान काम करता है। आप संशोधित करने के बाद परियोजना के निर्माण समस्या आ रही है Makefileऔर CMakeLists.txtएक को संशोधित करने की कोशिश *.cppफ़ाइल। यह होगा CLion खरोंच से सब कुछ का निर्माण होता।
ह्लिन ११।

यह काम करता है, लेकिन जब मैंने कॉन्फ़िगरेशन को "स्वच्छ बनाने" को जोड़ने की कोशिश की तो यह विफल हो गया।
71GA

1
FYI करें यह काम करने के लिए, कम से कम कुछ परियोजनाओं पर, (जैसे रेडिस), आपको एक 'ALL' जोड़ना होगा, इसे बनाना होगा: add_custom_target (mytest ALL COMMAND मेक -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PROJECT_BINARY_DIR} )
डेकर

1
मुझे इसे बदलने के लिए सीसीसी के साथ काम करने के लिए क्या बदलना चाहिए
रोमेन-पी

33

हालांकि यह सबसे अधिक वोट किए जाने वाले फ़ीचर अनुरोधों में से एक है, विक्टर क्रॉप द्वारा एक प्लगइन उपलब्ध है, जो मेकफ़ाइ करने के लिए समर्थन जोड़ता है:

IntelliJ आईडिया के लिए मेकफाइल समर्थन प्लगइन

इंस्टॉल

आप आधिकारिक रिपॉजिटरी से सीधे इंस्टॉल कर सकते हैं:

सेटिंग्स> प्लगइन्स> खोज के लिए makefile> रिपॉजिटरी में खोजें> इंस्टॉल करें> पुनः आरंभ करें

उपयोग

चलाने के कम से कम तीन अलग-अलग तरीके हैं:

  1. मेकफाइल पर राइट क्लिक करें और रन का चयन करें
  2. , संपादक में makefile खुला है (लाइन पर कहीं भी) एक लक्ष्य पर कर्सर रखा, मारा alt+ enter, तो चयन कर लक्ष्य
  3. एक लक्ष्य पर हिट ctrl/ cmd+ shift+ F10(हालांकि यह एक मेरे लिए काम नहीं किया मैक पर)।

यह आउटपुट के साथ रन लक्ष्य नामक एक फलक खोलता है ।


2
बस एक हेडअप, यदि आप इस मार्ग पर जाते हैं, तो सुनिश्चित करें कि आप सेटिंग में जाते हैं-> सुनिश्चित करें और सुनिश्चित करें कि आप प्लग इन को इंस्टॉल की निर्देशिका में इंगित करते हैं। डिफ़ॉल्ट रूप से यह
टेलर लिस

5
मैंने आपकी विधि की कोशिश की, लेकिन यह केवल आपकी परियोजना बनाने का अवसर देता है, है ना? मैं एक एप्लिकेशन नहीं चला सकता जिसे इस प्लगइन के साथ बनाया गया था, या मुझे कुछ याद नहीं है? मेरे पास एक प्रोजेक्ट है जिसमें काफी जटिल मेकफाइल है और मैं इसके लिए एक सीएमके फ़ाइल नहीं लिखना चाहता, लेकिन मैं इसे CLion का उपयोग करके डीबग करना चाहूंगा ...
blacktemplar

@blacktemplar मुझे नहीं पता कि क्या आप CLion से सभी डीबगिंग टूल का उपयोग कर सकते हैं, लेकिन मुझे उपरोक्त विधि के साथ बनाई गई बाइनरी फ़ाइल को संकलित और डीबग करने में सक्षम होना चाहिए। मैंने इसके साथ बस थोड़ा सा खेला है और मैं उदाहरण के लिए चरण नियंत्रण बटन का उपयोग करने में सक्षम था।
iled

2
अधिक जटिल कॉन्फ़िगरेशन के लिए यह स्वीकृत उत्तर की तुलना में बहुत आसान है। Makefile को केवल उस मेकफ़िल को चलाने के लिए संपादन करना पागलपन है!
केविन

1
आपने क्लेयर में उत्पन्न बाइनरी को कैसे चलाया? मैं अनुप्रयोग के लिए एक नया कॉन्फ़िगरेशन बनाता हूं, फिर लक्ष्य: सभी लक्ष्य, निष्पादन योग्य: बाइनरी का नाम, फिर भी मुझे यह त्रुटि मिलती है: " binary<डिफ़ॉल्ट> पर नहीं चल सकता "
केनेट सेलेस्टे

7

नवीनतम संस्करण में संकलित के माध्यम से किसी भी उत्पन्न Makefiles के लिए शाब्दिक समर्थन है

तीन चरण:

  1. संकलित स्थापित करें

    pip install compiledb
    
  2. ड्राई मेक रन करें

    compiledb -n make 
    

    (ऑटोजेन करें, यदि आवश्यक हो तो कॉन्फ़िगर करें)

  3. एक compile_commands.json फ़ाइल होगी जो प्रोजेक्ट को ओपन करती है और आप देखेंगे कि CLion json फाइल से जानकारी लोड करेगा। यदि आप अपना CLion अभी भी CMakeLists.txt को खोजने का प्रयास करते हैं और compile_commands.json नहीं पढ़ सकते हैं, तो संपूर्ण फ़ोल्डर को निकालने का प्रयास करें, स्रोत फ़ाइलों को फिर से डाउनलोड करें, और चरण 1,2,3 को फिर से बनाएँ।

ओरिजिनल पोस्ट: संकलन डीबी का उपयोग करते हुए क्लेयन में मेकफाइल्स के साथ काम करना


1
अच्छा है कि Jetbrains समस्या पर काम कर रहा है, लेकिन 16 नवंबर 2018 को इसका उपयोग उपयोगी नहीं है क्योंकि आप उत्पन्न निष्पादन को डीबग नहीं कर सकते हैं।
जेरार्डव

3

CMAKE के उपयोग से पूरी तरह से बचने के लिए, आप बस यह कर सकते हैं:

  1. टर्मिनल के माध्यम से मेक के साथ अपनी परियोजना का निर्माण करें।

  2. अपने CLion कॉन्फ़िगरेशन बदलें, (शीर्ष बार में) जाएं:
    Run -> Edit Configurations -> yourProjectFolder

  3. Executableमेक के साथ उत्पन्न एक में बदलें

  4. Working directoryअपने निष्पादन योग्य रखने वाले फ़ोल्डर में बदलें (यदि आवश्यक हो)

  5. बॉक्स Buildमें कार्य निकालेंBefore launch:Activate tool window

और आप सब सेट हैं! अब आप अपने मैनुअल बिल्ड के बाद डीबग बटन का उपयोग कर सकते हैं।


1
मेरा विन्यास जैसा कि आपने बताया कि "कुछ भी नहीं बनाना है" भले ही निष्पादन योग्य सेट और मौजूद है।
गधा

यह सही है। आपको मैन्युअल रूप से निर्माण करना चाहिए (फिर भवन के बिना)। ध्यान दें कि CLION का नवीनतम संस्करण MakeFiles को बेहतर समर्थन देता है। यह समाधान अभी भी काम करता है, लेकिन मैं इसे Deprecated
13013SwagR

आप नवीनतम संस्करण के लिए क्या सुझाव देंगे? मैं makefile प्लगइन है, लेकिन यह संकलन / डिबगिंग को संभाल नहीं करता है।
गधा

आपको संकलन करने में सक्षम होना चाहिए और मैं डीबग प्लगइन के साथ डिबग का भी अनुमान लगा रहा हूं। क्लेयन डॉक्टर देखें । हालांकि, मेरा सुझाव है कि आप सीएमके का उपयोग करें जो पूरी तरह से समर्थित है और सभी परेशानी से बचा जाता है। आप इसे दूरस्थ डीबग टेम्पलेट के साथ सेट कर सकते हैं (मुझे लगता है) या आप कंसोल में सीधे जीडीबी का उपयोग करते हैं।
13013SwagR

1

वर्तमान में, केवल CMake CLion द्वारा समर्थित है। अन्य बिल्ड सिस्टम भविष्य में जोड़े जाएंगे, लेकिन वर्तमान में, आप केवल CMake का उपयोग कर सकते हैं।

CMake का उपयोग करने में आपकी सहायता करने के लिए एक आयातक उपकरण लागू किया गया है।

संपादित करें:

स्रोत: http://blog.jetbrains.com/clion/2014/09/clion-answers-frequently-asked-estestions/


यह देखते हुए कि यह पोस्ट अब एक महीने के लिए बाहर हो गया है, और यह एकमात्र प्रतिक्रिया है, मुझे यकीन है कि आप सही हैं, दुर्भाग्य से ...
hlin117

टिप्पणी के स्रोत में गहराई से खुदाई करने पर, मुझे यह पता चला: youtrack.jetbrains.com/issue/CPP-494#tab=Comments
hlin117

क्या होगा अगर आप cmake का उपयोग नहीं करना चाहते हैं?
Enerccio

1

मैं सीएमके से बहुत परिचित नहीं हूं और सीधे मोंडकिन के समाधान का उपयोग नहीं कर सकता।

यहाँ मैं अपने CMakeLists.txt में विंडोज पर CLion (1.2.4) और MinGW के नवीनतम संस्करण का उपयोग करके आया हूं (मुझे लगता है कि आपको बस सभी को बदलने की आवश्यकता होगी: g ++ mytest.cpp -o bin / mytest for if आप एक ही सेटअप का उपयोग नहीं कर रहे हैं):

cmake_minimum_required(VERSION 3.3)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest ALL COMMAND mingw32-make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

और कस्टम मेकफाइल इस तरह है (यह मेरी परियोजना के मूल में स्थित है और एक बिन निर्देशिका में निष्पादन योग्य बनाता है):

all:
    g++ mytest.cpp -o bin/mytest

मैं निष्पादन योग्य बनाने में सक्षम हूं और लॉग विंडो में त्रुटियां क्लिक करने योग्य हैं।

आईडीई में संकेत काफी सीमित हैं, जो शुद्ध सीएमके परियोजनाओं की तुलना में एक बड़ी सीमा है ...


इसने मेरे लिए काम किया। मैं अपने सभी को शामिल करके set(SOURCE_FILES all_files_here.c)और फिर add_executable(foobar_cmake ${SOURCE_FILES})कस्टम लक्ष्य के अतिरिक्त जोड़कर अपने स्रोत फ़ाइलों को "सक्रिय" के रूप में पहचानने के लिए CLion प्राप्त करने में सक्षम था । फिर बस सुनिश्चित करें कि CLION आपके कस्टम लक्ष्य को बनाने / चलाने के लिए सेट है न कि _cmake।
केविन मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.