GNU मेक के साथ CMake का उपयोग करना: मैं सटीक कमांड कैसे देख सकता हूं?


281

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

जीएनयू मेक है --debug, लेकिन ऐसा नहीं लगता है कि सहायक कोई अन्य विकल्प हैं? क्या सीमेक डिबगिंग उद्देश्य के लिए उत्पन्न मेकफाइल में अतिरिक्त झंडे प्रदान करता है?


2
या, कुछ खोज शब्दों को जोड़ने के लिए, पूर्ण को कैसे छिपाएं, वर्बोज़ निष्पादित कमांड लाइनों और केवल शांत प्रतिशत रंगीन आउटपुट का प्रदर्शन करें।
ulidtko

गैर
सीएमके

mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
5

जवाबों:


369

जब आप मेक रन करते हैं, VERBOSE=1तो फुल कमांड आउटपुट देखने के लिए जोड़ें । उदाहरण के लिए:

cmake .
make VERBOSE=1

या आप -DCMAKE_VERBOSE_MAKEFILE:BOOL=ONजनरेट किए गए मेकफाइल्स से स्थायी वर्बोज़ कमांड आउटपुट के लिए cmake कमांड जोड़ सकते हैं ।

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

कुछ संभवतः कम-दिलचस्प आउटपुट को कम करने के लिए आप निम्नलिखित विकल्पों का उपयोग करना पसंद कर सकते हैं। विकल्प CMAKE_RULE_MESSAGES=OFFकी तरह हटा लाइनों [33%] बिल्डिंग सी वस्तु ... , जबकि --no-print-directoryवर्तमान निर्देशिका प्रिंट आउट की तरह लाइनों को छान नहीं करने के लिए कर बताता है make[1]: Entering directoryऔर make[1]: Leaving directory

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory

12
ये समाधान इसे बहुत क्रियात्मक बनाते हैं, बहुत सारे सीमेक को प्रिंट करते हैं और ऐसे इंटर्न बनाते हैं जो दिलचस्प नहीं हैं। क्या केवल संकलन और लिंक कमांड दिखाने का कोई तरीका है (यानी आमतौर पर डिबगिंग समस्याओं के लिए क्या प्रासंगिक है)। शायद यहां तक ​​कि केवल उस कमांड को प्रदर्शित करें जो विफल हो गया।
चिरकालिक


7
वैसे, यदि आप एक ऐसे प्लेटफ़ॉर्म पर हैं जो इसका समर्थन करता है तो cmake -GNinja . ; ninja -vन्यूनतम फ़ुल के साथ एक बहुत अच्छा वर्बोज़ आउटपुट दिखाता है।
रिक्टर

10
सिंगल लाइन ...cmake --build . -- VERBOSE=1
letmaik

जाहिरा तौर पर, मुझे एक नए cmake संस्करण के साथ काम करना चाहिए, क्योंकि cmake चलाने के बाद मेरी बिल्ड डायरेक्टरी में कोई मेकफाइल्स नहीं मिला है ...
DrumM

80

CMakeLists.txtफ़ाइल में विकल्प सेट करना सुविधाजनक है :

set(CMAKE_VERBOSE_MAKEFILE ON)

3
कृपया अपनी परियोजनाओं के लिए ऐसा न करें। आपके सभी उपयोगकर्ता आपके वर्बोज़ बिल्ड आउटपुट को देखना नहीं चाहते हैं। अपने पुस्तकालय का उपभोग करने वाले हर व्यक्ति पर यह बल न डालें। CMAKE_VERBOSE_MAKEFILE डिबगिंग उद्देश्यों के लिए डिफ़ॉल्ट रूप से और उपयोगकर्ता की पसंद के अनुसार बंद होना चाहिए, यदि उन्हें इसकी आवश्यकता है।
एला El२ El२

3
इसलिए? यदि आप कई डेवलपर्स हैं और आप उन्हें एक विकल्प देना चाहते हैं तो आप इसे हमेशा कैश चर के रूप में जोड़ सकते हैं। लेकिन हाँ, किसी प्रोजेक्ट के रिलीज़ संस्करण में आपको डिफ़ॉल्ट रूप से बंद होना चाहिए।
जेम्स हिर्सचोर्न

1
Qt.io QtCreator का उपयोग करते समय यह एक बढ़िया विकल्प है क्योंकि सेमी को GUI द्वारा कहा जाता है। धन्यवाद!
ग्रांट रोस्टिग

9

या बस इस तरह शेल पर VERBOSE पर्यावरण चर निर्यात करें: export VERBOSE=1


8

यदि आप CMake GUI का उपयोग करते हैं तो उन्नत दृश्य पर स्वैप करें और फिर विकल्प को CMAKE_VERBOSE_MAKEFILE कहा जाता है।


जीयूआई का उपयोग किए बिना, मैं टेक्स्ट फ़ाइलों में यह विकल्प कैसे सेट कर सकता हूं?
20

4

मैं यह सुनिश्चित करने की कोशिश कर रहा था कि -ggdbझंडा मौजूद था।

एक साफ निर्देशिका में कॉल करें और उस झंडे को पकड़ें जिसे आप ढूंढ रहे हैं। के लिए खोज रहे debugबजाय ggdbमैं सिर्फ लिखेंगे।

make VERBOSE=1 | grep debug

-ggdbझंडा अस्पष्ट पर्याप्त है कि केवल संकलन आदेशों अप पॉपअप था।

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