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()

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()

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.