【问题标题】:What is the CMake equivalent of make -k?make -k 的 CMake 等价物是什么?
【发布时间】:2021-11-01 04:12:36
【问题描述】:

CMake 是否有相当于make -k 的方法,换句话说,即使一个文件中出现错误,CMake 也会继续编译其他文件?

【问题讨论】:

  • 您想跳过哪种确切的错误编译文件并执行其他构建步骤的不是CMake。 CMake 只执行配置。配置过程中的错误已经分类为fatal,立即终止配置(例如,因为错误之后的步骤没有意义)和non-fatal,允许配置继续直到最后。所以对于 CMake 本身来说,-k 选项会有点意义。
  • 只需通过 cmake 生成makefiles 并在构建时使用make -k。您可能正在生成ninja 或其他东西......但cmake 也可以生成makefiles
  • 感谢您的教育,我正在使用 QtCreator,并认为 cmake 是 qmake 的替代品。在那个环境中,我可以在 qmake 输出上配置一个 make -k 。现在编译必须由忍者或其他人制作。但我现在看到这确实是一个 qtcreator 问题,而不是一个 cmake 问题。我的错。所以我将把它发布在 qtcreator 论坛上,而不是在 stackoverflow 上。再次感谢您对我的教育。
  • 如果您使用 Ninja,您必须提供一个额外的参数,说明在 Ninja 停止之前允许发生多少错误,0 是无限的。 ninja -k 0 将等同于 make -k。另请参阅stackoverflow.com/q/58920832/2799037

标签: cmake makefile


【解决方案1】:

CMake 不会自行引导编译,它会将其委托给一些构建工具集,如 Make、Ninja、msbuild 等。如果调用该工具,则必须将参数添加到调用中,例如,将 -k 添加到您拨打电话并 -k 0 拨打您的 Ninja 电话。
如果您通过 CMake 命令 cmake -build <options> 构建,您可以在 -- 之后添加 build-toolset 特定参数,如

cmake -build <options> -- -k

制作。

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-07-31
    • 2023-03-11
    • 1970-01-01
    • 2014-05-08
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多