补充说明
cmake 不直接编译代码,而是读取 CMakeLists.txt,为 Make、Ninja、Visual Studio 等后端生成构建文件。它把“配置”和“构建”分离:先在构建目录中探测编译器与依赖并生成缓存,再由 cmake --build 调用实际构建工具。
推荐使用独立的构建目录(out-of-source build),不要把生成文件混进源码树。配置阶段通过 -D变量=值 传入选项,构建类型(Debug/Release)也应显式指定;修改 CMakeLists.txt 后重新运行配置即可。
语法
cmake [选项] -S 源码目录 -B 构建目录
cmake --build 构建目录 [--target 目标]
选项
-S DIR:源码目录-B DIR:构建目录(不存在会自动创建)-G 生成器:如Ninja、Unix Makefiles-D 变量=值:设置缓存变量-DCMAKE_BUILD_TYPE=类型:Debug、Release、RelWithDebInfo-DCMAKE_INSTALL_PREFIX=路径:安装前缀-L、-LAH:列出缓存变量(含高级变量)--build DIR:执行构建--install DIR:执行安装
实例
# 配置到 build 目录,使用 Ninja 与 Release 构建
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
# 打开某个项目选项
cmake -S . -B build -DBUILD_TESTS=ON -DCMAKE_INSTALL_PREFIX=/usr/local
# 编译(并行使用所有 CPU)
cmake --build build -j"$(nproc)"
# 只构建某个目标
cmake --build build --target myapp
# 运行测试
ctest --test-dir build --output-on-failure
# 安装到配置的前缀
sudo cmake --install build
切换编译器或修改关键选项后,若缓存导致异常,删除整个 build/ 目录重新配置是最干净的排查方式。