【问题标题】:tell cmake to be quiet告诉 cmake 保持安静
【发布时间】:2012-05-17 13:44:06
【问题描述】:

我可以在 cmake 中使用一个变量来使其表现得像通过了 -q 选项一样吗?这会很好,因为我有一个非常模块化的构建,它会使 cmakes 输出变得混乱。我在一个 c++ 项目中使用它。

【问题讨论】:

    标签: build cmake


    【解决方案1】:

    从 cmake 3.1 开始,设置CMAKE_INSTALL_MESSAGE 也非常有用。例如,set(CMAKE_INSTALL_MESSAGE LAZY) 将跳过 -- Up-to-date: 消息。

    【讨论】:

    • 还有设置(CMAKE_INSTALL_MESSAGE NEVER)。
    【解决方案2】:

    没有我知道的变量。但是,您可以将以下 hack 添加到顶级 CMakeLists.txt 的开头(在 project 调用之前)以稍微控制输出:

    function(message)
      list(GET ARGV 0 MessageType)
      if(MessageType STREQUAL FATAL_ERROR OR
         MessageType STREQUAL SEND_ERROR OR
         MessageType STREQUAL WARNING OR
         MessageType STREQUAL AUTHOR_WARNING)
        list(REMOVE_AT ARGV 0)
        _message(${MessageType} "${ARGV}")
      endif()
    endfunction()
    

    这会覆盖 CMake 的内置 message 命令并禁止所有 STATUS 和未键入的消息,让更重要的类型正确输出。

    例如的输出WARNING 消息将从

    CMake Warning at CMakeLists.txt:14 (message):
      This is a dummy warning message.
    

    CMake Warning at CMakeLists.txt:8 (_message):
      This is a dummy warning message.
    Call Stack (most recent call first):
      CMakeLists.txt:14 (message)
    

    请注意,生成警告消息的实际行列在调用堆栈中,而不是输出消息的第一行。

    最后,这对指示配置尝试成功或失败的摘要输出没有影响。

    【讨论】:

    • 酷!所以你可以做任何你想做的消息是吧?
    • 有没有办法阻止调用堆栈的东西?感谢您的回答!
    • @alexhairyman 不是,但您需要它来跟踪错误/警告的实际来源。如果您不想看到错误/警告,您可以随时删除 function 正文中的所有内容,以便 message 成为无操作。或者只是将错误类型留在if 中并忽略警告。
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      对于 CMake 的安装部分,它倾向于每个文件打印一行(例如 -- Up-to-date: /some/destination/path-- Installing: /some/destination/path),您可以这样做

      set(CMAKE_INSTALL_MESSAGE LAZY)  # Don't tell us about up-to-date files.
      

      不打印已经存在的文件(如果您重复运行安装,就像您在开发过程中一样),甚至

      set(CMAKE_INSTALL_MESSAGE NEVER)  # Install silently.
      

      这个option has been present since CMake 3.1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-14
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        相关资源
        最近更新 更多