Linux 命令速查
开发工具 man cmake

cmake

跨平台构建系统生成器

返回

补充说明

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/ 目录重新配置是最干净的排查方式。

参考链接