news 2026/4/15 17:11:43

HoRain云--CMake构建流程详解:从入门到精通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--CMake构建流程详解:从入门到精通

🎬 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)

关键指令说明:

2. 创建构建目录(推荐"Out-of-source"构建方式)

为什么需要?

操作步骤:

mkdir build cd build

3. 生成构建文件

在构建目录中运行 CMake 命令,生成适合当前平台的构建系统文件。

cmake ..

参数说明:

CMake 会执行:

4. 编译项目

使用生成的构建文件进行编译。

cmake --build .

等价于:

make

参数说明:

5. 运行程序

编译完成后,运行生成的可执行文件。

./MyApp

CMake 构建流程图

源代码目录 │ ├── CMakeLists.txt ├── main.cpp └── ...其他源文件 │ ↓ 创建构建目录 (build) │ ↓ cd build && cmake .. │ ├── 生成 Makefile/CMakeCache.txt 等文件 │ ↓ cmake --build . │ ├── 生成可执行文件 (MyApp) │ ↓ ./MyApp

为什么采用"Out-of-source"构建方式?

  1. 保持源代码整洁:编译生成的文件不会与源代码混在一起
  2. 多配置支持:可以为同一源代码创建多个构建目录(如 build/debug 和 build/release)
  3. 避免意外删除:不会因为清理构建文件而误删源代码

高级构建选项

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 目录下)

常见问题

  1. CMake 与构建工具的关系

  2. 为什么需要 CMake?

  3. CMake 版本要求

总结

CMake 构建流程是一个标准化的、跨平台的项目构建方法,通过"Out-of-source"构建方式保持源代码的整洁,使用 CMakeLists.txt 文件定义构建规则,最后通过底层构建工具(如 make)完成实际编译。这种流程使开发者能够专注于代码开发,而无需关心不同平台的构建细节。

掌握 CMake 构建流程是 C++ 项目开发的基础,对于管理大型项目和跨平台开发尤为重要。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:56:08

3步掌握kiss-translator:让外文网页秒变中文的终极方案

3步掌握kiss-translator:让外文网页秒变中文的终极方案 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/4/16 11:56:50

性能对比:不同云平台运行Z-Image-Turbo的性价比分析

性能对比:不同云平台运行Z-Image-Turbo的性价比分析 为什么需要关注云平台的选择? 作为一名技术决策者,选择适合团队AI开发的云平台至关重要。Z-Image-Turbo作为当前热门的图像生成模型,在不同云平台上的表现差异显著。本文将基于…

作者头像 李华
网站建设 2026/4/15 22:01:29

吐血推荐8个AI论文工具,专科生轻松搞定论文格式!

吐血推荐8个AI论文工具,专科生轻松搞定论文格式! 专科生的论文救星,AI 工具怎么选? 在当今这个信息爆炸的时代,论文写作已经不再是研究生的专属任务,越来越多的专科生也开始面临论文写作的压力。无论是课程…

作者头像 李华
网站建设 2026/4/16 13:30:08

springboot基于Vue动漫周边商场商城设计实现

技术背景Spring Boot作为Java领域的轻量级框架,凭借自动配置、内嵌服务器和快速开发特性,显著简化了后端服务搭建。Vue.js作为渐进式前端框架,通过组件化和响应式数据绑定提升了用户界面开发效率。两者结合形成前后端分离架构,适合…

作者头像 李华
网站建设 2026/4/16 15:54:04

翻译质量评估:BLEU分数与人工评分的对比研究

翻译质量评估:BLEU分数与人工评分的对比研究 📌 引言:AI 智能中英翻译服务的兴起与挑战 随着全球化进程加速,跨语言信息交流需求激增,AI 智能中英翻译服务已成为自然语言处理(NLP)领域的重要应用…

作者头像 李华