🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录
⛳️ 推荐
CMake 构建流程详解
CMake 构建流程概述
详细构建流程
1. 准备 CMakeLists.txt 文件
2. 创建构建目录(推荐"Out-of-source"构建方式)
3. 生成构建文件
4. 编译项目
5. 运行程序
CMake 构建流程图
为什么采用"Out-of-source"构建方式?
高级构建选项
清理构建文件
常见问题
总结
CMake 构建流程详解
CMake 是一个开源的跨平台自动化构建系统,它通过CMakeLists.txt配置文件生成适合不同平台的构建系统(如 Makefile、Ninja 构建文件、Visual Studio 项目文件等),从而简化项目的编译和构建过程。
CMake 构建流程概述
CMake 构建流程可以概括为:编写 CMakeLists.txt → 创建构建目录 → 生成构建文件 → 编译构建 → 运行程序
详细构建流程
1. 准备 CMakeLists.txt 文件
每个 CMake 项目必须有一个CMakeLists.txt文件(位于项目根目录),用于定义项目的构建规则。
示例 CMakeLists.txt:
cmake_minimum_required(VERSION 3.10) project(MyApp) # 添加可执行文件,源文件为 main.cpp add_executable(MyApp main.cpp)关键指令说明:
cmake_minimum_required:指定所需最低 CMake 版本project:定义项目名称add_executable:将源文件编译成可执行程序
2. 创建构建目录(推荐"Out-of-source"构建方式)
为什么需要?
- 保持源代码目录整洁
- 方便管理不同构建配置(如 Debug/Release)
- 避免编译文件污染源代码目录
操作步骤:
mkdir build cd build3. 生成构建文件
在构建目录中运行 CMake 命令,生成适合当前平台的构建系统文件。
cmake ..参数说明:
..:表示 CMakeLists.txt 位于上一级目录- 可添加参数指定构建类型:
cmake .. -DCMAKE_BUILD_TYPE=Release
CMake 会执行:
- 读取 CMakeLists.txt 和配置文件
- 检测系统编译器(gcc/g++)
- 生成构建所需的 Makefile 和中间文件(CMakeCache.txt, CMakeFiles/ 等)
4. 编译项目
使用生成的构建文件进行编译。
cmake --build .等价于:
make参数说明:
--build .:表示在当前目录(即构建目录)中执行构建- 可指定目标:
cmake --build . --target MyApp
5. 运行程序
编译完成后,运行生成的可执行文件。
./MyAppCMake 构建流程图
源代码目录 │ ├── CMakeLists.txt ├── main.cpp └── ...其他源文件 │ ↓ 创建构建目录 (build) │ ↓ cd build && cmake .. │ ├── 生成 Makefile/CMakeCache.txt 等文件 │ ↓ cmake --build . │ ├── 生成可执行文件 (MyApp) │ ↓ ./MyApp为什么采用"Out-of-source"构建方式?
- 保持源代码整洁:编译生成的文件不会与源代码混在一起
- 多配置支持:可以为同一源代码创建多个构建目录(如 build/debug 和 build/release)
- 避免意外删除:不会因为清理构建文件而误删源代码
高级构建选项
CMake 提供丰富的高级功能,例如:
cmake_minimum_required(VERSION 3.10) project(MyApp) # 设置编译选项 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # 条件编译 if (CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(MyApp PRIVATE DEBUG_MODE) endif() # 添加子目录 add_subdirectory(external_lib) # 安装配置 install(TARGETS MyApp RUNTIME DESTINATION bin)清理构建文件
make clean # 清理 make 生成的中间文件 rm -rf * # 清理 CMake 生成的中间文件(在 build 目录下)常见问题
CMake 与构建工具的关系:
- CMake 是生成构建系统的工具
- 生成的 Makefile、Ninja 文件等才是实际执行编译的工具
为什么需要 CMake?
- 简化跨平台编译
- 自动检测系统环境
- 管理复杂依赖关系
CMake 版本要求:
- 确保系统安装的 CMake 版本满足
cmake_minimum_required指定的版本
- 确保系统安装的 CMake 版本满足
总结
CMake 构建流程是一个标准化的、跨平台的项目构建方法,通过"Out-of-source"构建方式保持源代码的整洁,使用 CMakeLists.txt 文件定义构建规则,最后通过底层构建工具(如 make)完成实际编译。这种流程使开发者能够专注于代码开发,而无需关心不同平台的构建细节。
掌握 CMake 构建流程是 C++ 项目开发的基础,对于管理大型项目和跨平台开发尤为重要。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙