Faça com que o CMAKE gere um erro


136

Como posso obter o CMAKE para gerar um erro em uma condição específica. Ou seja, eu quero algo como isto:

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

Respostas:


185

O message()método tem um argumento opcional para o modo, permitindo STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, e FATAL_ERROR. STATUSas mensagens vão para stdout. Todos os outros modos de mensagem, incluindo nenhum, vão para o stderr.

Você deseja SEND_ERRORse deseja gerar um erro, mas continue o processamento. Você deseja FATAL_ERRORse deseja sair do processamento do CMake.

Algo como:

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
O que diabos é um AUTHOR_WARNING?
Alexis Wilke

1
@AlexisWilke: o estado do CMake docs AUTHOR_WARNING = CMake Warning (dev), continue processing, sugerindo que ele seja usado para depurar scripts do CMake. Apenas um palpite.
9789 Paulist86

5
@AlexisWilke O AUTHOR_WARNINGindica um aviso que não é útil para o usuário final, mas para os desenvolvedores. Ele pode lembrá-los de corrigir algum hack / todos ou indicar avisos que devem ser corrigidos, mas não afetam a execução do CMake para o usuário. É por isso que o usuário pode suprimir esses avisos com --Wno-dev.
Usr1234567

2
CMake agora tem muitos modos mais mensagens que acompanham message(), incluindo VERBOSE, DEBUGe TRACE.
Squareskittles 5/10/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.