cmake --build 和 make,有什么区别?

5

之后

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

看起来像是

cmake --build .

并且

make

在 macOS 上也要做同样的事情。

那么,我应该在什么时候使用其中之一呢?


1
根据CMake文档:“另外,你可以使用CMake通过自动选择和调用相应的本地构建工具来构建项目。”。所以我猜如果你的项目使用的是ninja或其他不同于make的工具,你可以让CMake找到需要调用的命令来构建你的项目。 - Mr. Fegur
1
没有区别,除非使用另一个生成器,否则make将失败。 - 273K
如果你正在编写构建系统的脚本,请使用 cmake --build bldloc。当你将项目移植到另一个平台并使用其他生成器时,你会感激自己这样做了。顺便说一下,我也使用Mac,而且cmake + vscode + lldb、cmake和c++扩展程序非常好用。强烈推荐。 - WhozCraig
3个回答

10

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

但是自从有了 预设 这两种方法开始真正分道扬镳。你可以在预设的构建部分中添加一些内容,然后通过 cmake --build --preset MyPreset 调用,而无法使用简单的 make 实现相同的功能。

因此,如果你将 CMake 作为项目工具使用,我建议你开始使用其构建界面,因为这是未来使用的预期方式(至少看起来是这样)。


0

make 不是 Windows 中的一个可识别命令。在这种情况下,cmake --build . 是你的好朋友。

cmake build . 有时也可以工作,但我不知道这些现象的更深层解释。


-1

cmake -B ...在此处输入

类型 - 构建类型 例如:用于VS Studio的.sln项目

make - 构建您的项目

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接