cmake 常用设置编译参数

在CMake中,你可以通过cmake --build命令来构建项目。这个命令提供了许多选项,允许你定制构建过程,例如指定构建类型(如Debug或Release)、并行构建(使用多个处理器核心)以及其他各种参数。

1. 基本用法

首先,确保你的项目已经使用CMake配置过了,生成了构建系统(通常是Makefile、Ninja文件等)。例如,你可以在命令行中运行:

 cmake -S /path/to/source -B /path/to/build

然后,你可以使用以下命令来构建项目:

 cmake --build /path/to/build

2. 指定构建类型

你可以通过--config选项来指定构建类型。例如,要构建Release版本,你可以这样做:

 cmake --build /path/to/build --config Release

如果要构建Debug版本,使用:

cmake --build /path/to/build --config Debug

3. 指定生成器(可选)

如果你需要指定生成器(例如,使用Ninja而不是默认的Makefile),可以在配置阶段使用-G选项:

 cmake -S /path/to/source -B /path/to/build -G "Ninja"

然后,使用Ninja来构建:

 cmake --build /path/to/build --config Release -- -j 4 # 使用4个处理器核心并行构建

4. 并行构建

你可以通过添加-j选项来并行构建,以提高构建速度。例如,使用4个处理器核心并行构建:

 cmake --build /path/to/build --config Release -- -j 4

5. 清理构建目录

如果你想清理构建目录并重新开始,可以使用--clean-first选项:

 cmake --build /path/to/build --config Release --clean-first

6. 查看可用的选项和帮助信息

要查看cmake --build命令的可用的所有选项和帮助信息,你可以运行:

 cmake --build --help

这将会列出所有可用的选项和它们的描述,帮助你更好地理解如何定制你的构建过程。

通过上述方法,你可以灵活地控制CMake的构建过程,包括选择构建类型、并行构建等。

cmake编译命令

mkdir build
cd build
cmake … -G “Visual Studio 17 2022” -A x64
cmake --build . --config Release

1. 创建构建目录  mkdir build

作用:创建一个名为 build 的目录,用于存放构建过程中生成的中间文件(如 CMakeCache.txt、.vcxproj 等)。
为什么需要:将构建文件与源代码分离,保持项目根目录的整洁(称为“out-of-source build”)。
典型路径结构:
project/
├── src/ # 源代码
├── include/ # 头文件
└── build/ # 构建目录(新创建)
 2. 进入构建目录 cd build

3.  生成构建系统文件

cmake .. -G "Visual Studio 17 2022" -A x64

命令分解:

cmake ..:运行 CMake,.. 表示 CMake 的输入路径是上一级目录(即项目根目录,其中需包含 CMakeLists.txt)。
-G "Visual Studio 17 2022":指定生成器(Generator),使用 Visual Studio 2022 作为构建工具。
-A x64:指定目标平台为 64 位(x64)。对于 Visual Studio 生成器,此选项定义架构。
关键细节:

生成器的作用:CMake 会根据生成器生成对应的构建系统文件(如 Visual Studio 的 .sln 和 .vcxproj 文件)。
Visual Studio 版本:"Visual Studio 17 2022" 对应 VS 2022。旧版本可能使用 "Visual Studio 16 2019" 或 "Visual Studio 15 2017"。
平台参数:Windows 下常用 -A x64 或 -A Win32。Linux/macOS 通常不需要此参数。
4.  执行构建

cmake --build . --config Release

命令分解:

cmake --build .:使用 CMake 调用底层构建工具(如 Visual Studio 的 MSBuild 或 Ninja)。
--config Release:指定构建类型为 Release(若生成器支持多配置,如 Visual Studio)。
关键细节:

跨平台兼容性:此命令抽象了底层构建工具,避免直接调用 MSBuild 或 make,更通用。
构建类型:
Debug:调试版本,包含符号信息,无优化。
Release:发布版本,启用优化,无调试符号。
其他:RelWithDebInfo(带调试信息的发布版)、MinSizeRel(最小体积优化)
 完整流程的作用

隔离构建产物:所有中间文件和最终二进制文件均在 build 目录下,便于清理(直接删除 build 目录即可)。
多配置支持:通过 --config 可切换 Debug/Release,无需重新生成构建系统。
适配 IDE:生成 Visual Studio 解决方案文件(.sln),方便在 IDE 中打开和调试。
常见问题
1. 生成器不匹配
错误示例:Could not create named generator "Visual Studio 17 2022"。
原因:本地未安装对应版本的 Visual Studio,或 CMake 版本过低。
解决:安装 Visual Studio 2022,或更新 CMake。
2. 平台参数错误
错误示例:Invalid value for -A。
原因:非 Visual Studio 生成器(如 Ninja)可能不需要 -A。
解决:使用 -DCMAKE_GENERATOR_PLATFORM=x64 替代,或更换生成器。
3. 构建类型无效
错误示例:Unknown build type "Release"。
原因:单配置生成器(如 Ninja)需要在生成时指定 -DCMAKE_BUILD_TYPE=Release。
解决:
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build .

扩展用法
并行编译(加速构建)
cmake --build . --config Release --parallel 8 # 使用 8 个线程

清理构建
cmake --build . --target clean # 清理中间文件

安装到指定目录
cmake --install . --prefix ../install # 将构建产物安装到上级的 install 目录
 

posted @ 2025-08-30 17:40  konglingbin  阅读(8)  评论(0)    收藏  举报