Заставить CMAKE генерировать ошибку


136

Как я могу заставить CMAKE генерировать ошибку при определенном условии. То есть я хочу что-то вроде этого:

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

Ответы:


185

message()Метод имеет дополнительный аргумент для режима, позволяя STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, и FATAL_ERROR. STATUSсообщения отправляются на стандартный вывод. Любой другой способ сообщения, включая ни одного, отправляется в 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?
Алексис Вилке

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

5
@AlexisWilke The AUTHOR_WARNINGобозначает предупреждение, которое не полезно для конечного пользователя, но для разработчиков. Он может либо напомнить им исправить некоторые взломы / задачи, либо указать предупреждения, которые должны быть исправлены, но не влияют на запуск CMake для пользователя. Вот почему пользователь может подавить эти предупреждения с помощью --Wno-dev.
usr1234567

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