【问题标题】:Cause CMAKE to generate an error导致 CMAKE 产生错误
【发布时间】:2011-07-21 04:35:51
【问题描述】:

如何让 CMAKE 在特定条件下生成错误。也就是说,我想要这样的东西:

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

【问题讨论】:

    标签: cmake


    【解决方案1】:

    message() 方法具有模式的可选参数,允许 STATUSWARNINGAUTHOR_WARNINGSEND_ERRORFATAL_ERRORSTATUS 消息转到标准输出。其他所有消息模式(包括无消息模式)都进入 stderr。

    如果要输出错误,则需要SEND_ERROR,但继续处理。 如果要退出 CMake 处理,则需要 FATAL_ERROR

    类似:

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

    【讨论】:

    • AUTHOR_WARNING 到底是什么?
    • @AlexisWilke:CMake 文档状态为AUTHOR_WARNING = CMake Warning (dev), continue processing,表明它用于调试 CMake 脚本。只是一个疯狂的猜测。
    • @AlexisWilke AUTHOR_WARNING 表示对最终用户无用但对开发人员有用的警告。它可以提醒他们修复一些黑客/待办事项或指示应该修复但不影响用户运行 CMake 的警告。这就是为什么用户可以使用--Wno-dev 禁止这些警告。
    • CMake 现在有 许多 更多伴随 message() 的消息模式,包括 VERBOSEDEBUGTRACE