Причини CMAKE, щоб генерувати помилку


136

Як я можу отримати CMAKE, щоб генерувати помилку за певної умови. Тобто я хочу щось подібне:

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

Відповіді:


185

message()Метод має додатковий аргумент для режиму, дозволяючи STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, і FATAL_ERROR. STATUSповідомлення йдуть до stdout. Кожен інший режим повідомлення, включаючи жоден, не переходить на stderr.

Ви хочете, SEND_ERRORякщо ви хочете вивести помилку, але продовжуйте обробку. Ви хочете, FATAL_ERRORякщо ви хочете вийти з обробки CMake.

Щось на зразок:

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
Що за чорт AUTHOR_WARNING?
Alexis Wilke

1
@AlexisWilke: стан документів CMake AUTHOR_WARNING = CMake Warning (dev), continue processing, пропонуючи його використовувати для налагодження сценаріїв CMake. Просто дика здогадка.
pauluss86

5
@AlexisWilke AUTHOR_WARNINGПозначає попередження, яке корисне не кінцевому користувачеві, а розробникам. Він може або нагадувати їм виправити якийсь хак / todos або вказати попередження, які слід виправити, але не впливати на запуск CMake для користувача. Ось чому користувач може придушити ці попередження за допомогою --Wno-dev.
usr1234567

2
CMake тепер має багато режимів більш повідомлень , які супроводжують message(), в тому числі VERBOSE, DEBUGі TRACE.
squareskittles
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.