【问题标题】:cmake --build vs make, what the difference?cmake --build vs make,有什么区别?
【发布时间】:2022-07-05 01:38:38
【问题描述】:

之后

cd build
cmake -B . -DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake -S ..

看起来像

cmake --build .

make

在 macOS 上做同样的事情。

那么,我应该什么时候使用其中一种?

【问题讨论】:

  • 根据 cmake 文档:Alternatively, one may use cmake to Build a Project by automatically choosing and invoking the appropriate native build tool.。所以我猜如果你的项目使用了 ninja 或 make 以外的其他东西,你可以让 cmake 找出调用哪些命令来构建你的项目。
  • 没有区别,除非使用另一个生成器,然后make 将失败。
  • 如果您正在编写构建系统的脚本,只需使用cmake --build bldloc。当您将项目移动到另一个带有备用生成器的平台时,您会很高兴您做到了。顺便说一句,我也使用 mac,cmake + vscode + lldb、cmake 和 c++ 扩展 = 非常喜欢。强烈推荐。

标签: c++ macos cmake makefile gnu-make


【解决方案1】:

对于简单的使用没有太大的区别,除了cmake --build 更通用并且适用于任何生成器。所以今天你使用make,明天使用ninjamsbuild,CMake 使用简单的cmake --build 处理它,你可以将其放入脚本或自述文件中。

但是自从presets 成立以来,这两种方法就开始出现真正的分歧。您可以在预设的构建部分中添加一些东西,然后可以由cmake --build --preset MyPreset 调用,而您不能对简单的make 执行相同操作。

因此,既然您使用 CMake 作为您的项目工具,我建议您开始使用它的界面进行构建,因为这就是它在未来的使用方式(至少看起来如此)。

【讨论】:

    【解决方案2】:

    cmake -B ...在这里输入

    type - 构建类型 例如 vs studio 的 .sln 项目

    make - 构建你的项目

    cmake - 允许您为您的项目创建不同的构建类型。

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2010-10-20
      • 2010-11-14
      • 1970-01-01
      • 2021-08-26
      相关资源
      最近更新 更多