การใช้ CMake กับ GNU Make: ฉันจะดูคำสั่งที่แน่นอนได้อย่างไร


281

ฉันใช้ CMake กับ GNU Make และต้องการดูคำสั่งทั้งหมดอย่างแน่นอน (ตัวอย่างเช่นวิธีการคอมไพเลอร์ถูกดำเนินการแฟล็กทั้งหมด ฯลฯ )

GNU สร้าง--debugขึ้นมา แต่ดูเหมือนว่าจะมีประโยชน์หรือไม่ CMake จัดเตรียมแฟล็กเพิ่มเติมใน Makefile ที่สร้างขึ้นเพื่อการดีบักหรือไม่


2
หรือเพื่อเพิ่มคำค้นหาวิธีการซ่อนบรรทัดคำสั่งที่ดำเนินการแบบละเอียดและแสดงเฉพาะเอาต์พุตสีเปอร์เซ็นต์เงียบ ๆ
ulidtko


mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
ปรสิต

คำตอบ:


369

เมื่อคุณรัน make เพิ่มVERBOSE=1เพื่อดูเอาต์พุตคำสั่งแบบเต็ม ตัวอย่างเช่น:

cmake .
make VERBOSE=1

หรือคุณสามารถเพิ่ม-DCMAKE_VERBOSE_MAKEFILE:BOOL=ONคำสั่ง cmake สำหรับเอาต์พุตคำสั่ง verbose ถาวรจาก Makefiles ที่สร้างขึ้น

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

หากต้องการลดเอาต์พุตที่น่าสนใจน้อยลงคุณอาจต้องการใช้ตัวเลือกต่อไปนี้ ตัวเลือกCMAKE_RULE_MESSAGES=OFFสายการลบเช่น[33%] อาคาร C วัตถุ ...ในขณะที่--no-print-directoryบอกว่าทำไม่ได้พิมพ์ออกไดเรกทอรีปัจจุบันกรองออกเส้นเหมือนและmake[1]: Entering directorymake[1]: Leaving directory

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

12
โซลูชั่นเหล่านี้ทำให้มันละเอียดเกินไปพิมพ์ CMake จำนวนมากและสร้าง internals ที่ไม่น่าสนใจ มีวิธีใดที่จะแสดงเฉพาะคำสั่งการคอมไพล์และลิงค์ บางทีแม้แต่แสดงคำสั่งที่ล้มเหลว
Tronic


7
โดยวิธีการถ้าคุณอยู่บนแพลตฟอร์มที่สนับสนุนมันจะcmake -GNinja . ; ninja -vแสดงผลลัพธ์ verbose ที่ดีมากกับปุยน้อยที่สุด
richq

10
บรรทัดเดียว ...cmake --build . -- VERBOSE=1
letmaik

เห็นได้ชัดว่าฉันต้องทำงานกับรุ่น cmake ที่ใหม่กว่าเนื่องจากไม่มีไฟล์ makefiles ในไดเรกทอรีสร้างของฉันหลังจากเรียกใช้ cmake ...
DrumM

80

การตั้งค่าตัวเลือกในCMakeLists.txtไฟล์เป็น:

set(CMAKE_VERBOSE_MAKEFILE ON)

3
โปรดอย่าทำสิ่งนี้สำหรับโครงการของคุณเอง ผู้ใช้บางคนของคุณอาจต้องการเห็นเอาต์พุตการสร้างอย่างละเอียดของคุณ อย่าบังคับให้คนอื่นกินห้องสมุดของคุณ CMAKE_VERBOSE_MAKEFILE ควรปิดโดยค่าเริ่มต้นและตัวเลือกของผู้ใช้หากพวกเขาต้องการมันสำหรับการแก้จุดบกพร่อง
Ela782

3
ดังนั้น? คุณสามารถเพิ่มมันเป็นตัวแปรแคชได้ตลอดเวลาหากคุณมีนักพัฒนาหลายคนและต้องการให้พวกเขามีทางเลือก แต่ใช่ในรุ่นที่วางจำหน่ายของโครงการคุณควรจะปิดโดยปริยาย
James Hirschorn

1
นี่เป็นตัวเลือกที่ยอดเยี่ยมเมื่อใช้ qt.io QtCreator เนื่องจาก cmake ถูกเรียกโดย GUI ขอบคุณ!
Grant Rostig

9

หรือเพียงแค่ส่งออกตัวแปรสภาพแวดล้อม VERBOSE บนเชลล์เช่นนี้ export VERBOSE=1


8

หากคุณใช้ CMake GUI จากนั้นสลับไปที่มุมมองขั้นสูงจากนั้นตัวเลือกจะถูกเรียกว่า CMAKE_VERBOSE_MAKEFILE


ฉันจะตั้งค่าตัวเลือกนี้ในไฟล์ข้อความโดยไม่ใช้ GUI ได้อย่างไร
osgx

4

ฉันพยายามทำสิ่งที่คล้ายกันเพื่อให้แน่ใจว่ามีการ-ggdbตั้งค่าสถานะ

โทรหาในไดเรกทอรีที่สะอาดและตั้งค่าสถานะที่คุณต้องการ มองหาdebugมากกว่าที่ggdbฉันจะเขียน

make VERBOSE=1 | grep debug

-ggdbธงก็มากพอที่ชัดเจนว่ามีเพียงคำสั่งรวบรวมโผล่ขึ้นมา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.