Làm cách nào để gỡ lỗi tệp CMakeLists.txt?


Câu trả lời:


62

Không có debugger tương tác cho CMake, tuy nhiên cũng có những lá cờ -Wdev, --debug-output--traceđó có thể giúp đỡ. Ngoài ra, hãy nhớ kiểm tra các tệp nhật ký CMakeFiles\CMakeOutput.logCMakeFiles\CMakeError.logchủ yếu thu thập kết quả đầu ra của các quy trình được gọi bởi CMake (ví dụ trong khi kiểm tra sự hiện diện của một loại hoặc tiêu đề).

Kể từ phiên bản 3.7 , CMake hiện chính thức hỗ trợ "chế độ máy chủ" nên việc tích hợp trong IDE có thể sẽ được cải thiện trong tương lai gần. Hỗ trợ ban đầu tồn tại cả trong Qt CreatorVisual Studio 2017 RC


Chúng tôi sử dụng cái nào để gỡ lỗi ifcâu lệnh trong CmakeList.txt? came --debug ...cmake --debug-output ...không in chúng. Trong Bash, tương đương là bash -x <cmd>.
jww 14/09/2016

@jww Tôi không chắc chắn 100% những gì bạn đang cố gắng để gỡ lỗi, nhưng sản lượng của --tracethường khá rộng (chuyển hướng đầu ra vào một tập tin!)
Joe

Tôi đang cố gắng gỡ lỗi tập lệnh và hiểu tại sao một số khối mã nhất định không được nhập. Nhưng tôi thấy vấn đề: string(STRIP ...)đã bị hỏng. Ngoài ra, hãy xem Làm thế nào để loại bỏ dòng mới theo sau trong biến Cmake? . Tôi xin lỗi nếu bạn không biết những gì bash -xlàm.
jww

Bạn không nên chỉ đề cập đến việc kiểm tra nhật ký. Bạn nên giải thích cách kiểm tra nhật ký.
Thomas Jay Rush

@ThomasJayRush Tôi đã thêm thông tin về vị trí và nội dung của các tệp nhật ký. Bất cứ điều gì ngoài điều đó phụ thuộc vào vấn đề cụ thể.
Joe

7

Bạn có thể thử sử dụng CMake Script Debugger mới được cung cấp bởi công cụ VisualGDB . Nó sử dụng một nhánh mã nguồn mở của CMake hỗ trợ bước qua các tệp CMakeLists.txt, đặt mã / điểm ngắt dữ liệu, đánh giá / thay đổi các biến, v.v.

Có một hướng dẫn chi tiết từng bước về trình gỡ lỗi mới ở đây


5

Có các Công cụ CMake Daemon của steveire . Bản thân tôi chưa sử dụng chúng, nhưng chúng tuyên bố cung cấp khả năng xem xét nội tâm dường như khá gần với trình gỡ lỗi.

Chỉnh sửa : Bây giờ chúng được gọi là CMake-server và là một phần của CMake 3.7.


3

Tôi thích sử dụng variable_watch để "gỡ lỗi" các tệp CMakeLists.txt của mình. Chỉ cần đặt ở đầu tập lệnh của tôi:

variable_watch(SOME_MY_VAR)

2

Ngoài ra, hãy đọc về env var VERBOSE: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html

Tôi đã sử dụng nó theo cách này:

export VERBOSE=defined
make

và có một số chi tiết hơn.

Trong các trường hợp khác, hãy chỉnh sửa CMakeLists.txttệp để bao gồm dòng sau:

set(CMAKE_VERBOSE_MAKEFILE ON)

(Một số bài đăng trên này là https://bytefreaks.net/programming-2/make-building-with-cmake-verbose ).

Ngoài ra, có các cmaketùy chọn hữu ích kiểm soát đầu ra gỡ lỗi, hãy xem manpage: https://cmake.org/cmake/help/latest/manual/cmake.1.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.