मैं CMakeLists.txt फ़ाइलों को डीबग कैसे करूं?


जवाबों:


62

CMake के लिए कोई इंटरैक्टिव डिबगर नहीं है, हालांकि झंडे भी हैं -Wdev, --debug-outputऔर --traceजो मदद कर सकता है। लॉग फाइलों की जांच करना भी याद रखें CMakeFiles\CMakeOutput.logऔर CMakeFiles\CMakeError.logजो मुख्य रूप से सीएमके द्वारा बुलाए गए प्रक्रियाओं के आउटपुट को इकट्ठा करते हैं (उदाहरण के लिए एक प्रकार या हेडर की उपस्थिति के लिए जांच करते समय)।

संस्करण 3.7 के बाद से , सीएमके अब आधिकारिक तौर पर एक "सर्वर मोड" का समर्थन करता है, इसलिए निकट भविष्य में आईडीई में एकीकरण में सुधार होने की संभावना है। प्रारंभिक समर्थन Qt क्रिएटर और विज़ुअल स्टूडियो 2017 RC दोनों में मौजूद है


हम कौन से ifकथन का उपयोग करते हैं CmakeList.txt? came --debug ...और cmake --debug-output ...उन्हें नहीं छाप रहे हैं। बैश में, समकक्ष है bash -x <cmd>
jww

@jww मुझे 100% यकीन नहीं है कि आप क्या डिबग करने की कोशिश कर रहे हैं, लेकिन इसका आउटपुट --traceआमतौर पर काफी व्यापक होता है (किसी फ़ाइल के लिए रीडायरेक्ट करना!)
जो

मैं स्क्रिप्ट को डीबग करने और समझने की कोशिश कर रहा था कि क्यों कुछ कोड ब्लॉक दर्ज नहीं किए जा रहे थे। लेकिन मुझे समस्या मिली: string(STRIP ...)टूट गया था। यह भी देखें कि Cmake वैरिएबल में ट्रेलिंग न्यूलाइन कैसे स्ट्रिप करें? । अगर आप नहीं जानते कि मेरी माफी क्या bash -xहै।
jww

आपको केवल लॉग की जाँच का उल्लेख नहीं करना चाहिए। आपको यह बताना चाहिए कि लॉग्स की जाँच के बारे में कैसे जाना जाता है।
थॉमस जे रश

@ThomasJayRush मैंने लॉग फ़ाइलों के स्थान और सामग्री के बारे में जानकारी जोड़ी। इससे परे कुछ भी विशिष्ट मुद्दे पर निर्भर करता है।
जो

7

आप VisualGDB उपकरण द्वारा प्रदान किए गए नए CMake स्क्रिप्ट डीबगर का उपयोग करने का प्रयास कर सकते हैं । यह CMake के एक ओपन-सोर्स फोर्क का उपयोग करता है जो CMakeLists.txt फ़ाइलों के माध्यम से कदम का समर्थन करता है, कोड / डेटा ब्रेकप्वाइंट सेट करना, चर का मूल्यांकन / बदलना आदि।

यहां नए डीबगर पर एक विस्तृत चरण-दर-चरण ट्यूटोरियल है


5

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

संपादित करें : उन्हें अब CMake- सर्वर कहा जाता है और वे CMake 3.7 का हिस्सा हैं।


3

मुझे मेरी CMakeLists.txt फ़ाइलों को "डीबग" करने के लिए variable_watch का उपयोग करना पसंद है । बस मेरी स्क्रिप्ट के ऊपर सेट करें:

variable_watch(SOME_MY_VAR)

2

इसके अलावा, env var के बारे में पढ़ें VERBOSE: https://cmake.org/cmake/help/latest/envvar/VERVOSIN.html

मैंने इसे इस तरह इस्तेमाल किया:

export VERBOSE=defined
make

और कुछ अधिक वाचालता मिली।

अन्य मामलों में, CMakeLists.txtनिम्नलिखित पंक्ति को शामिल करने के लिए फ़ाइल को संपादित करें :

set(CMAKE_VERBOSE_MAKEFILE ON)

(इस पर कुछ पोस्ट https://bytefreaks.net/programming-2/make-building-with-cmake-verbose ) है।

इसके अलावा, cmakeडिबग आउटपुट को नियंत्रित करने वाले उपयोगी विकल्प हैं, मैनपेज देखें: https://cmake.org/cmake/help/latest/manual/cmake.1.html

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