首页 > 解决方案 > 对于单平台项目,cmake 比 make 有什么好处

问题描述

如果有一个相对较大的项目完全使用Makefiles 构建,是否可以用 s 替换 make cmake?每个人都强调cmake更容易支持跨平台开发,但如果目标平台只是一个,并且没有计划改变它。cmake在这种特定情况下,我会从中获得什么好处?

标签: makefilecmakegnu-make

解决方案


  1. CMake 还擅长查找依赖项。以 OpenMP、TBB 和 MPI 为例,它们在并行执行方面非常常见。CMake 提供了方便的方法来检查这些库中的哪些存在。你得到一个变量来使用添加包含和库到你的目标,你就完成了。如果您想在您的 C、C++ 代码(或您使用的任何代码)中知道存在哪个库,CMake 提供了将预处理器宏传递给编译器命令的方法。

  2. 与 Makefile 相比,CMakeLists.txt 文件更间接。这使它们更难阅读和理解。随着项目规模的扩大,它变成了一种优势,因为您必须在一个或更少的点上进行更改。

  3. 使用 CTest 很容易包含基本测试。

  4. 您可以在项目中包含一些模块(CMake 代码文件)。这可以帮助您找到依赖项、自动化 Qt 的 moc(已包含在 CMake 中)或构建您的文档(Sphinx、JavaDoc、Doxygen、LaTeX)。使用 Make,大多数时候您最终都会编写自己的代码。

当然,你可以用 make 做任何事情,但它需要更多的努力。您的项目越大,获得的目标和依赖项越多,成熟的构建系统就越能得到回报。这不仅适用于 CMake,也适用于 Meson、Waf 等。


推荐阅读