Verursacht, dass CMAKE einen Fehler generiert

136

Wie kann ich CMAKE dazu bringen, unter einer bestimmten Bedingung einen Fehler zu generieren? Das heißt, ich möchte so etwas:

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

Antworten:

185

Das message()Verfahren weist ein optionales Argument für den Modus, in dem STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, und FATAL_ERROR. STATUSNachrichten gehen an stdout. Jeder andere Nachrichtenmodus, einschließlich keiner, geht an stderr.

Sie möchten, SEND_ERRORwenn Sie einen Fehler ausgeben möchten, aber die Verarbeitung fortsetzen möchten. Sie möchten, FATAL_ERRORwenn Sie die CMake-Verarbeitung beenden möchten.

Etwas wie:

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é
quelle
1
Was zum Teufel ist das AUTHOR_WARNING?
Alexis Wilke
1
@AlexisWilke: Der CMake-Dokumentstatus AUTHOR_WARNING = CMake Warning (dev), continue processingweist darauf hin, dass er zum Debuggen von CMake-Skripten verwendet werden soll. Nur eine wilde Vermutung.
Pauluss86
5
@AlexisWilke Dies AUTHOR_WARNINGzeigt eine Warnung an, die für den Endbenutzer, aber für die Entwickler nicht nützlich ist. Es kann sie entweder daran erinnern, einige Hack / Aufgaben zu beheben, oder Warnungen anzeigen, die behoben werden sollten, aber den CMake-Lauf für den Benutzer nicht beeinflussen. Deshalb kann der Benutzer diese Warnungen mit unterdrücken --Wno-dev.
usr1234567
2
CMake hat jetzt viele weitere Nachricht Modi , die begleiten message(), einschließlich VERBOSE, DEBUGund TRACE.
Squareskittles