【问题标题】:How to produce a make build that is verbose only on failure如何生成仅在失败时才详细的 make 构建
【发布时间】:2021-03-09 19:59:49
【问题描述】:

有很多方法可以使用cmake 生成详细的make 命令。 这在很多地方都是described。 (基本上cmake; make VERBOSE=1 或设置CMAKE_VERBOSE_MAKEFILE 变量)。

这里的详细是指显示make所采取的步骤的调用命令和其他信息。

这似乎是一个全有或全无的设置。 您要么看到所有命令,要么没有看到任何命令, 不管命令是否成功。

相关工具ctest(用于测试)有一个非常有用的选项--output-on-failure,其详细程度取决于特定测试是否成功; 仅在测试失败时显示屏幕。

问题是cmake 是否有类似的功能,只提供失败的详细信息。 也就是说,在大多数情况下,我不想看到 make 编译命令,但是当它失败时,我想看看显示所有选项失败的确切命令是什么。

也就是说,问题是makecmake 是否有一些设置或命令行选项,在构建步骤中,将只为失败的命令打印完整的发出命令(和输出)。

原因当然是它提供了查看失败步骤的实际编译标志的机会,并允许有时以交互方式重现确切的命令。

(我使用 C++,但我认为这个问题很笼统)

【问题讨论】:

    标签: debugging makefile cmake output


    【解决方案1】:

    这并不完全是一个答案,因为您只提到了make,但您问的是Ninja 的默认行为。它只输出失败的命令。

    【讨论】:

      【解决方案2】:

      有时,当我太绝望并且无法理解错误消息时,我会这样做:

      make -j 10 -k || make  VERBOSE=1
      

      所以它会快速编译,如果失败,它会以详细模式再次串行运行。很可能是第一次编译失败。

      【讨论】:

        猜你喜欢
        • 2018-11-26
        • 1970-01-01
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多