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()
edA-qa mort-ora-y
źródło

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()
André
źródło
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