Powoduje, że CMAKE generuje błąd


136

Jak sprawić, by CMAKE wygenerował błąd w określonym stanie. To znaczy, chcę coś takiego:

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

Odpowiedzi:


185

message()Sposób ten ma opcjonalny argument dla trybu, co pozwala STATUS, WARNING, AUTHOR_WARNING, SEND_ERRORi FATAL_ERROR. STATUSwiadomości trafiają na stdout. Każdy inny tryb wiadomości, w tym żaden, jest kierowany na stderr.

Chcesz, SEND_ERRORjeśli chcesz wyprowadzić błąd, ale kontynuuj przetwarzanie. Chcesz, FATAL_ERRORjeśli chcesz zakończyć przetwarzanie CMake.

Coś jak:

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
Co to do cholery jest AUTHOR_WARNING?
Alexis Wilke

1
@AlexisWilke: stan dokumentacji CMake AUTHOR_WARNING = CMake Warning (dev), continue processing, sugerujący, że ma być używany do debugowania skryptów CMake. Tylko szalone przypuszczenie.
pauluss86

5
@AlexisWilke Symbol AUTHOR_WARNINGwskazuje ostrzeżenie, które nie jest przydatne dla użytkownika końcowego, ale dla programistów. Może przypominać im o naprawieniu niektórych hack / todos lub wskazywać ostrzeżenia, które powinny zostać naprawione, ale nie mają wpływu na działanie CMake dla użytkownika. Dlatego użytkownik może wyłączyć te ostrzeżenia za pomocą --Wno-dev.
usr1234567

2
CUpewnij ma teraz wiele trybów wiadomość więcej towarzyszące message(), w tym VERBOSE, DEBUGi TRACE.
squareskittles
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.