Заставить 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