“CMake 的突出优势在于其丰富的功能列表。”

Bryce Adelstein Lelbach,标准 C++ 库演进组主席。

CMake 拥有众多其他功能。以下仅列举其中一小部分。

跨平台单源构建

CMake 允许开发者使用一套输入文件来描述如何构建简单和非常复杂的软件系统。这可以用于在多个平台(从 Android 到 iOS 再到高性能计算系统)上构建软件。

精确依赖和最小化重构

CMake 拥有精确的依赖关系,并且只重构已更改的代码。它还支持 Fortran 和 C++ 模块。

源码外构建

CMake 支持源码外构建,并允许每个源码树拥有多个构建树。

面向目标的构建方法

现代 CMake 允许将构建指定为一组目标(可执行文件、库、自定义命令)。每个目标直接定义它依赖的其他目标。然后,CMake 按正确的顺序执行构建,并包含传递性链接目标。

系统内省与缓存,可捕获构建环境

每个 CMake 构建树都包含一个缓存文件,其中存储了作为该构建一部分设置的变量。这包括系统内省找到的所有内容、已安装软件的路径以及用于构建的标志。CMake 包含多个 GUI,允许编辑此缓存文件。

多目标构建系统支持

CMake 支持多种目标构建系统,包括 Visual Studio、Xcode、ninja、make 和 VSCode。它允许项目充分发挥其最重要资源——开发者——的潜力。由于 CMake 支持许多流行的 C++ IDE 系统以及命令行构建工具,开发者可以选择他们最能高效工作的构建工具。

跨平台打包系统

CMake 包含 CPack 系统,该系统允许为 Linux、Windows 和 Mac 创建跨平台安装程序。

完整的跨平台安装系统

CMake 包含一个完整的跨平台安装系统。使用相同的命令集,可以将软件打包安装到 Linux、Windows 和 Mac。

跨平台测试系统

CMake 包括一个完整的跨平台测试系统。测试可以在项目的 CMake 源代码中指定,并在构建完成后运行。然后使用 CTest 来运行测试。结果可以发送到 CDash,并且测试可以并行运行。

自定义命令

除了构建标准库和可执行文件外,CMake 还允许在构建时运行任意命令。这使得代码生成工具能够实现跨平台集成。

配置头文件

CMake 允许项目为构建配置头文件。

目标的导出/导入

CMake 可以导出和导入构建的目标,以实现软件的重用。

调试器集成

CMake 实现调试适配器协议,以便使用 第三方工具 交互式调试项目的 CMake 代码。

为您构建的 CMake

Kitware 可以与您合作开发一个根据您的需求量身定制的 CMake 软件构建系统。