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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.