Faire en sorte que CMAKE génère une erreur


136

Comment puis-je obtenir CMAKE pour générer une erreur sur une condition particulière. Autrement dit, je veux quelque chose comme ça:

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

Réponses:


185

Le message()procédé présente un argument facultatif pour le mode, ce qui permet STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, et FATAL_ERROR. STATUSles messages vont à stdout. Tous les autres modes de message, y compris aucun, vont à stderr.

Vous voulez SEND_ERRORsi vous souhaitez générer une erreur, mais continuer le traitement. Vous voulez FATAL_ERRORsi vous souhaitez quitter le traitement CMake.

Quelque chose comme:

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'est-ce que c'est que ça AUTHOR_WARNING?
Alexis Wilke

1
@AlexisWilke: l'état de la documentation CMake AUTHOR_WARNING = CMake Warning (dev), continue processing, suggérant qu'il doit être utilisé pour le débogage des scripts CMake. Juste une supposition sauvage.
pauluss86

5
@AlexisWilke Le AUTHOR_WARNINGindique un avertissement qui n'est pas utile à l'utilisateur final mais aux développeurs. Il peut leur rappeler de corriger certains hack / todos ou indiquer des avertissements qui devraient être corrigés mais n'affectent pas l'exécution de CMake pour l'utilisateur. C'est pourquoi l'utilisateur peut supprimer ces avertissements avec --Wno-dev.
usr1234567

2
CMake a maintenant de nombreux modes plus de messages qui accompagnent message(), y compris VERBOSE, DEBUGet TRACE.
squareskittles
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.