好的,进入 第三课:构建系统与构建类型详解,我们将讲清楚 CMake 背后做了什么,并学会生成不同类型的构建(Release / Debug)。
🧠 第三课目标:
-
理解什么是“构建目录”
-
理解 CMake 的两步构建流程
-
学会指定 Debug / Release 模式
-
掌握生成器(Generator)的作用
一、构建目录(build directory)是干什么的?
CMake 推荐将构建产物和源码分开。常见做法:
mkdir build
cd build
cmake .. # 把配置生成在 build 目录
cmake --build .
好处:
-
保持源目录整洁
-
支持多种构建配置(Debug/Release)共存
-
支持并行构建、多平台构建
二、CMake 的构建流程是“两步制”:
| 步骤 | 命令 | 作用 |
|---|---|---|
| 配置(Configure) | cmake .. | 生成构建系统(Makefile / VS 工程等) |
| 构建(Build) | cmake --build . | 实际调用构建系统进行编译链接 |
示例(Windows + Visual Studio):
cmake .. -G "Visual Studio 17 2022"
cmake --build . --config Release
三、Debug 与 Release 构建的区别
| 构建类型 | 编译器优化 | 是否包含调试信息 | 适用场景 |
|---|---|---|---|
| Debug | 无优化 | ✅有 | 开发调试 |
| Release | ✅开启优化 | ❌无调试信息 | 发布版本 |
如何指定构建类型?
对于 Visual Studio 工程:
cmake --build . --config Debug
cmake --build . --config Release
对于 Makefile / Ninja:
cmake .. -DCMAKE_BUILD_TYPE=Release
make
说明:
-
CMAKE_BUILD_TYPE只对单配置生成器(如 Makefile、Ninja)生效 -
多配置生成器(如 Visual Studio)不支持这个变量,需用
--config指定
四、什么是 Generator?你该用哪个?
Generator 指的是 CMake 要为哪个构建系统生成工程文件。
常见 Generator 示例(Windows):
| 构建器 | 命令 | 描述 |
|---|---|---|
| Visual Studio 2022 | -G "Visual Studio 17 2022" | 使用 MSVC,生成 .sln 工程文件 |
| MinGW Makefiles | -G "MinGW Makefiles" | 使用 MinGW 编译器(需手动安装) |
| Ninja | -G Ninja | 更快的构建系统(需先安装 ninja) |
✅ 实战练习
你可以尝试下面几种方式构建项目:
方式一:Visual Studio + Debug 构建
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022"
cmake --build . --config Debug
方式二:Make + Release 构建(如果你安装了 MinGW)
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
mingw32-make
🧩 小测试
Q1:你用 cmake .. 到底做了什么?
✅ 它读取
CMakeLists.txt,生成对应构建系统的工程文件(Makefile / .sln 等)
Q2:为什么我们要把构建目录分离出来?
✅ 为了保持源代码目录整洁、支持多种配置、便于管理
Q3:你怎么指定使用 Debug 编译?
✅ 对于 VS 用
--config Debug,对于 Make 用-DCMAKE_BUILD_TYPE=Debug
⏮️ 上一课回顾:【CMake基础入门】第二课:CMakeLists.txt 的基本语法与结构
⏭️ 下一课预告:添加多个源文件、头文件与 include 路径
我们将学会:
-
如何添加多个
.cpp和.h文件 -
如何设置 include 头文件路径
-
如何拆分项目结构
1543

被折叠的 条评论
为什么被折叠?



