Nguyên nhân gây ra lỗi


136

Làm cách nào tôi có thể nhận được CMAKE để tạo ra lỗi trong một điều kiện cụ thể. Đó là, tôi muốn một cái gì đó như thế này:

if( SOME_COND )
  error( "You can't do that" )
endif()

Câu trả lời:


185

Các message()phương pháp có một đối số tùy chọn cho chế độ, cho phép STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, và FATAL_ERROR. STATUStin nhắn đi đến stdout. Mọi chế độ khác của tin nhắn, kể cả không có, đi đến stderr.

Bạn muốn SEND_ERRORnếu bạn muốn xuất một lỗi, nhưng tiếp tục xử lý. Bạn muốn FATAL_ERRORnếu bạn muốn thoát khỏi xử lý CMake.

Cái gì đó như:

if( SOME_COND )
  message( SEND_ERROR "You can't do that" )
elseif( SOME_CRITICAL_COND )
  message( FATAL_ERROR "You can not do this at all, CMake will exit." )
endif()

1
Cái quái AUTHOR_WARNINGgì thế này?
Alexis Wilke

1
@AlexisWilke: trạng thái tài liệu CMake AUTHOR_WARNING = CMake Warning (dev), continue processing, gợi ý rằng nó sẽ được sử dụng để gỡ lỗi các tập lệnh CMake. Chỉ là một phỏng đoán hoang dã.
pauluss86

5
@AlexisWilke Dấu AUTHOR_WARNINGhiệu cảnh báo không hữu ích cho người dùng cuối mà là cho các nhà phát triển. Nó có thể nhắc nhở họ sửa một số hack / todos hoặc chỉ ra các cảnh báo cần được sửa nhưng không ảnh hưởng đến việc chạy CMake cho người dùng. Đó là lý do tại sao người dùng có thể ngăn chặn những cảnh báo này với--Wno-dev .
usr1234567

2
CMake hiện có nhiều chế độ tin nhắn đi kèm message(), bao gồm VERBOSE,DEBUGTRACE.
squareskittles
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.