2011-01-26 37 views
49

Tôi đang làm việc trên một dự án C++ lớn được xây dựng với cmake trên linux. Cmake chạy ổn, tạo ra một loạt các Makefiles trong cây module và ứng dụng. Chạy gnu dẫn đến lỗi liên kết. Làm thế nào tôi có thể thực hiện để in ra các lệnh chính xác trước khi chạy chúng?Thực hiện lệnh in cmake trước khi thực hiện

Tùy chọn -d không in các lệnh nhưng nhiều thông tin không hữu ích.

Tùy chọn -n in tất cả các lệnh, nhưng không chạy chúng, vì vậy tôi không thể nói chính xác là sự cố. Kiểm tra stdout từ make -n, tôi không thấy bất kỳ lệnh nào có liên quan. Tôi nghi ngờ một số lệnh thay đổi tùy thuộc vào kết quả của lệnh trước đó, và hệ thống phân cấp của Makefiles làm cho nó khó khăn để nói những gì đang thực sự xảy ra.

Tôi không thấy bất kỳ tùy chọn nào khác trong trang của người tạo có vẻ hữu ích.

+2

thể trùng lặp của [Sử dụng CMake với GNU Make: Làm thế nào tôi có thể thấy các lệnh chính xác] (http://stackoverflow.com/questions/2670121/using-cmake -with-gnu-make-how-can-i-xem-chính xác-lệnh) – richq

Trả lời

59

Khá chắc chắn điều này sẽ làm việc:

make VERBOSE=1 

Bạn cũng sẽ có thể để thêm video này CMakeLists.txt của bạn vĩnh viễn thiết lập đó.

set(CMAKE_VERBOSE_MAKEFILE on) 

Điều này được bao gồm trong CMake FAQ.

+2

Yup, đã làm được! Điều tiếp theo để gỡ lỗi: tại sao tôi không thể tìm thấy điều đó trong tài liệu? – DarenW

+0

Có cách nào, tôi có thể tùy chỉnh đầu ra không? Ví dụ, nếu tôi muốn chèn tùy chỉnh echo giữa biên dịch và liên kết như echo "đây là kết thúc của biên dịch và bây giờ chúng tôi sẽ bắt đầu liên kết" ... – infoclogged

+0

Tôi tìm thấy câu trả lời -> add_custom_command (TARGET yourtargetname POST_BUILD COMMAND echo "WE ĐÃ HOÀN THÀNH ĐÓNG GÓI ") – infoclogged

9

Đối automake tạo Makefiles thử

make V=1 
+0

Luôn luôn tốt để có phiên bản ngắn. +1 – ezdazuzena

Các vấn đề liên quan