CMake基础:覆盖项目开发的五大配套工具

发布于:2025-07-16 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

1.CMake的五大配套工具

2.cmake

3.ccmake

4.cmake-gui

5.ctest

6.cpack

7.总结

相关链接


1.CMake的五大配套工具

CMake实践:安装与配置

安装CMake后,以windows为例,在bin目录下就有五大配套工具:

在 文件夹中,cmakeccmakecmake-guictestcpack 是一系列配套工具,分别负责配置构建交互式配置图形化配置测试打包等环节,共同覆盖了从项目配置到最终分发的全流程。下面就来讲讲几个配套工具的功能。

2.cmake

核心命令行工具,CMake 的 “引擎”, 非常重要。

  • 主要作用:解析项目根目录下的 CMakeLists.txt,根据当前系统环境(如操作系统、编译器)生成对应的构建系统文件(如 Makefile、Ninja 脚本、Visual Studio 项目、Xcode 工程等)。
  • 工作流程:通过命令行指定源码目录(-S)和构建目录(-B),自动处理跨平台适配、依赖管理、编译选项等逻辑,生成可直接用于编译的构建文件。

示例

cmake -S ./src -B ./build  # 从 ./src 解析 CMakeLists,在 ./build 生成 Makefile
cd build && make           # 用生成的 Makefile 编译项目
  • 特点:非交互式,适合脚本、自动化流程(如 CI/CD),是最基础、最常用的 CMake 工具。

3.ccmake

curses 风格的交互式配置工具

  • 主要作用:提供终端内的交互式界面,允许用户可视化修改 CMake 变量(如 CMAKE_BUILD_TYPECMAKE_INSTALL_PREFIX、自定义编译选项等),并实时生成构建系统。
  • 适用场景:当需要调整 CMake 变量(如开启 / 关闭某个功能、设置依赖路径)但不想手动编辑 CMakeLists.txt 或命令行参数时使用,尤其适合没有图形界面的环境(如服务器、终端)。
  • 使用流程
ccmake -S ./src -B ./build  # 启动交互式界面
# 在界面中通过方向键导航,按 Enter 修改变量(如将 CMAKE_BUILD_TYPE 设为 Release)
# 按 'c' 配置(configure),按 'g' 生成(generate)并退出
  • 特点:终端交互式,比纯命令行 cmake 更直观地管理变量,但依赖 curses 库(需系统支持)。

在 Windows 系统上使用 ccmake(CMake 的终端交互式配置工具)需要进行一些额外配置,因为 Windows 默认不支持类似 Linux/macOS 的 curses 终端界面。可通过一下方法来使用:

方法一:使用 Windows Subsystem for Linux (WSL)

推荐方案:通过 WSL 在 Windows 中运行 Linux 环境,完全兼容 ccmake

1.启用 WSL

打开 PowerShell(管理员权限),执行:

wsl --install  # 安装默认 Linux 发行版(Ubuntu)

按提示重启系统,完成安装。

2.在 WSL 中安装 CMake

打开 WSL 终端(如 Ubuntu),执行:

3.使用 ccmake

  • 将项目源码放在 WSL 可访问的路径(如 ~/projects/myproject);
  • 在 WSL 终端中进入项目目录,执行:
mkdir build && cd build
ccmake ..  # 启动交互式配置界面

方法二:使用 MinGW/MSYS2 环境

在 Windows 原生环境中模拟 Unix 终端,提供 curses 支持。

1.安装 MSYS2

从 MSYS2 官网 下载安装程序,按提示完成安装。

2.安装 CMake 和依赖

打开 MSYS2 MinGW 64-bit 终端,执行:

pacman -Syu  # 更新系统
pacman -S cmake ncurses  # 安装 CMake 和 ncurses 库

3.使用 ccmake

在 MSYS2 终端中进入项目目录,执行:

mkdir build && cd build
ccmake ..  # 在 MSYS2 终端中启动交互式界面

4.cmake-gui

图形化配置工具

  • 主要作用:提供可视化窗口界面,功能与 ccmake 类似,但通过图形界面操作,更适合习惯鼠标交互的用户(如 Windows、macOS 桌面环境)。
  • 核心功能
    • 可视化选择源码目录(Where is the source code)和构建目录(Where to build the binaries);
    • 在窗口中直接编辑 CMake 变量(如勾选 BUILD_SHARED_LIBS 生成动态库);
    • 点击 “Configure” 生成临时配置,点击 “Generate” 生成最终构建系统文件。
  • 适用场景:对命令行不熟悉的用户,或需要频繁调整复杂变量(如多路径依赖、条件编译选项)时,图形界面更易操作。

5.ctest

CMake 自带的测试工具

  • 主要作用:运行项目中通过 add_test() 定义的测试用例,自动执行测试并生成报告,支持并行测试、过滤测试、生成 XML 格式结果等。
  • 工作流程
    1. 在 CMakeLists.txt 中通过 add_test(NAME <name> COMMAND <exe> [args]) 定义测试;
    2. 编译项目后,在构建目录中运行 ctest 执行所有测试(或通过 -R <regex> 过滤特定测试)。
  • 示例
cd build          # 进入构建目录(已生成测试目标)
ctest -j4         # 并行 4 个进程执行所有测试
ctest -R "unit_*" # 只执行名称匹配 "unit_*" 的测试
ctest --output-on-failure  # 测试失败时输出详细日志
  • 特点:与 CMake 无缝集成,无需额外配置测试框架(但可配合 Google Test、Catch2 等框架使用),是自动化测试的核心工具。

6.cpack

打包与分发工具

  • 主要作用:根据项目的安装配置(通过 install() 命令定义),生成跨平台的安装包 / 分发文件(如 .tar.gz.zip、Debian 包 .deb、RPM 包 .rpm、Windows 安装程序 .msi 等)。
  • 工作流程
    1. 在 CMakeLists.txt 中通过 install(TARGETS ...) 定义安装路径(如可执行文件、库、头文件的安装位置);
    2. 生成构建系统并编译后,在构建目录中运行 cpack,根据配置生成对应格式的安装包。
  • 示例
cd build          # 进入构建目录
make install      # 先执行安装(可选,cpack 可自动处理)
cpack -G ZIP      # 生成 ZIP 格式的压缩包
cpack -G DEB      # 生成 Debian 包(需系统支持 dpkg)
  • 特点:支持多种打包格式,可通过 CPack 相关变量(如 CPACK_PACKAGE_NAMECPACK_VERSION)定制包信息,简化项目分发流程。

7.总结

这五个工具分工明确,覆盖了 CMake 项目的全生命周期:

  • cmake:核心生成工具,负责从 CMakeLists.txt 生成构建系统;
  • ccmake/cmake-gui:辅助配置工具,分别提供终端 / 图形化界面调整 CMake 变量;
  • ctest:专注测试,执行项目测试用例并生成报告;
  • cpack:专注打包,将编译产物封装为可分发的安装包。

它们共同构成了 CMake 从 “配置 - 生成 - 编译 - 测试 - 打包” 的完整生态。

相关链接


网站公告

今日签到

点亮在社区的每一天
去签到