CMake 是最主流的 C/C++ 跨平台构建系统生成器。它不直接编译代码,而是生成底层构建系统(如 Makefile、Ninja、Visual Studio 项目)的配置文件。

CMake Presets

CMakePresets.json 允许预定义构建配置,避免每次手动传递参数。常见用法:

{
  "version": 6,
  "configurePresets": [
    {
      "name": "debug",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
      }
    },
    {
      "name": "release",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/release",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    }
  ]
}

使用:cmake --preset debug 然后 cmake --build --preset debug

调试 CMakeLists.txt

排查 CMake 配置问题的常用方法:

  • message(STATUS "var = ${MY_VAR}") — 打印变量值
  • cmake --trace — 跟踪所有 CMake 命令执行
  • cmake --trace-expand — 跟踪并展开变量
  • cmake -LA — 列出所有缓存变量
  • cmake --graphviz=deps.dot — 生成依赖关系图