HoRain云--CMake构建全流程指南

🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
|
专栏名称 |
专栏介绍 |
|
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
|
|
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
|
|
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
|
|
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
|
|
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
|
|
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录

根据搜索结果,我为您整理了 CMake 构建流程 的完整说明:
📌 CMake 构建流程概述
CMake 是一个跨平台的构建系统生成器,它不直接编译代码,而是根据 CMakeLists.txt 配置文件生成对应平台的构建文件(如 Makefile、Visual Studio 工程文件等)。
🔧 标准构建流程(4步)
步骤 1:准备项目结构
my_project/
├── CMakeLists.txt # 构建配置文件
├── src/
│ └── main.cpp # 源代码
└── include/
└── my_header.h # 头文件
步骤 2:编写 CMakeLists.txt
cmake_minimum_required(VERSION 3.10) # 指定最低CMake版本
project(MyProject VERSION 1.0) # 项目名称和版本
# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 添加可执行文件
add_executable(MyApp src/main.cpp)
# 添加头文件搜索路径
target_include_directories(MyApp PRIVATE include)
步骤 3:创建构建目录并配置(源外构建)
mkdir build # 创建构建目录(推荐与源码分离)
cd build
cmake .. # 生成构建文件(Makefile/VS工程文件等)
步骤 4:构建项目
cmake --build . # 编译项目
# 或
make # Linux/Mac
# 或
cmake --build . --config Release # 指定构建类型
📊 完整流程图
┌─────────────────┐
│ 项目源码目录 │
│ (CMakeLists.txt)│
└────────┬────────┘
│
▼
┌─────────────────┐
│ cmake .. │ ← 配置阶段:生成构建文件
└────────┬────────┘
│
▼
┌─────────────────┐
│ build/ 目录 │
│ (Makefile等) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ cmake --build │ ← 构建阶段:编译链接
└────────┬────────┘
│
▼
┌─────────────────┐
│ 可执行文件/库 │
└─────────────────┘
🛠️ 常用命令汇总
| 命令 | 说明 |
|---|---|
cmake .. |
配置项目,生成构建文件 |
cmake --build . |
编译项目 |
cmake --build . --target clean |
清理构建 |
cmake --install . |
安装项目 |
cpack |
打包项目 |
💡 最佳实践建议
- 源外构建:始终在独立的
build目录中构建,保持源码干净 - 指定CMake版本:使用
cmake_minimum_required确保兼容性 - 使用现代CMake:优先使用
target_*命令而非全局变量 - 依赖管理:可使用
FetchContent或find_package管理外部依赖 - 多配置支持:支持 Debug/Release 等多种构建类型
🔗 可选扩展功能
- 测试:使用
enable_testing()和add_test()添加测试 - 安装:使用
install()命令定义安装规则 - 打包:使用
CPack生成发布包(.deb、.rpm、.zip等) - 子项目:使用
add_subdirectory()管理多模块项目
这套流程适用于从简单命令行项目到大型跨平台项目的各种场景,配合 IDE(如 CLion、VS Code、Visual Studio)可实现更高效的开发体验。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)