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 代码。