【CMake基础入门教程】第三课:构建系统与构建类型详解

好的,进入 第三课:构建系统与构建类型详解,我们将讲清楚 CMake 背后做了什么,并学会生成不同类型的构建(Release / Debug)。


🧠 第三课目标:

  1. 理解什么是“构建目录”

  2. 理解 CMake 的两步构建流程

  3. 学会指定 Debug / Release 模式

  4. 掌握生成器(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

bash语句示例注解


三、Debug 与 Release 构建的区别

构建类型编译器优化是否包含调试信息适用场景
Debug无优化✅有开发调试
Release✅开启优化❌无调试信息发布版本

如何指定构建类型?

对于 Visual Studio 工程:

cmake --build . --config Debug
cmake --build . --config Release

对于 Makefile / Ninja:

cmake .. -DCMAKE_BUILD_TYPE=Release
make

bash语句示例注解

说明:

  • 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

bash语句示例注解


🧩 小测试

Q1:你用 cmake .. 到底做了什么?

✅ 它读取 CMakeLists.txt,生成对应构建系统的工程文件(Makefile / .sln 等)

Q2:为什么我们要把构建目录分离出来?

✅ 为了保持源代码目录整洁、支持多种配置、便于管理

Q3:你怎么指定使用 Debug 编译?

✅ 对于 VS 用 --config Debug,对于 Make 用 -DCMAKE_BUILD_TYPE=Debug


⏮️ 上一课回顾:【CMake基础入门】第二课:CMakeLists.txt 的基本语法与结构

⏭️ 下一课预告:添加多个源文件、头文件与 include 路径

我们将学会:

  • 如何添加多个 .cpp.h 文件

  • 如何设置 include 头文件路径

  • 如何拆分项目结构


bash语句示例注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇异果冻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值