Causa que CMAKE genere un error

136

¿Cómo puedo hacer que CMAKE genere un error en una condición particular? Es decir, quiero algo como esto:

if( SOME_COND )
  error( "You can't do that" )
endif()
edA-qa mort-ora-y
fuente

Respuestas:

185

El message()método tiene un argumento opcional para el modo, lo que permite STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, y FATAL_ERROR. STATUSlos mensajes van a stdout. Cualquier otro modo de mensaje, incluido ninguno, va a stderr.

Desea SEND_ERRORsi desea generar un error, pero continúe procesando. Desea FATAL_ERRORsi desea salir del procesamiento de CMake.

Algo como:

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()
André
fuente
1
¿Qué diablos es un AUTHOR_WARNING?
Alexis Wilke
1
@AlexisWilke: el estado de los documentos de CMake AUTHOR_WARNING = CMake Warning (dev), continue processing, lo que sugiere que debe usarse para depurar scripts de CMake. Solo una suposición salvaje.
pauluss86
55
@AlexisWilke El AUTHOR_WARNINGindica una advertencia que no es útil para el usuario final sino para los desarrolladores. Puede recordarles que arreglen algunos hack / todos o indicar advertencias que deberían repararse pero que no afectan la ejecución de CMake para el usuario. Es por eso que el usuario puede suprimir estas advertencias con --Wno-dev.
usr1234567
2
CMake ahora tiene muchos modos de mensajes más que acompañan message(), entre ellos VERBOSE, DEBUGy TRACE.
squareskittles