CMake FetchContent 依赖管理

📚 共计 30 章节
01
CMake初识
什么是CMake · 历史与哲学 · 为什么现代C++项目离不开CMake
入门概念
02
FetchContent初探
FetchContent是什么 · 解决什么问题 · 对比git submodule / ExternalProject
对比核心
03
核心模块解析
FetchContent_Declare详解 · MakeAvailable · GIT_REPOSITORY与GIT_TAG
API参数
04
第一个示例
使用FetchContent下载spdlog · 编写CMakeLists.txt · 编译运行验证
实战spdlog
05
版本管理策略
指定Tag / 分支 / Commit Hash · 版本锁定最佳实践
版本锁定
06
下载源配置
GIT_REPOSITORY · URL下载 · SVN支持 · 本地路径引用
灵活
07
依赖覆盖与缓存
FETCHCONTENT_UPDATES_DISCONNECTED · QUIET · SOURCE_DIR / BINARY_DIR
缓存覆盖
08
多依赖管理
同时管理多个第三方库 · 依赖关系 · 版本冲突解决
复杂冲突
09
条件下载
平台/编译选项/构建类型(Debug/Release) 条件依赖
平台条件
10
离线构建模式
预下载 · 本地镜像 · file://协议 · 企业级离线方案
离线企业
11
与find_package协同
优先系统包 · 回退FetchContent · 混合模式
协同混合
12
自定义下载逻辑
PATCH_COMMAND · UPDATE_DISCONNECTED · 自定义CONFIGURE_COMMAND
高级补丁
13
依赖更新策略
自动 vs 手动 · 版本锁文件(.lock) · CI/CD更新流程
CI/CD
14
大型项目实战
游戏引擎 · GUI框架 · 科学计算库依赖管理
实战大型
15
性能优化
并行下载 · 增量更新 · 缓存策略 · 减少网络请求
性能优化
16
调试技巧
打印FetchContent变量 · 下载日志 · 诊断失败原因
调试诊断
17
安全考虑
HTTPS vs HTTP · 校验和 · 签名验证 · 防中间人攻击
安全校验
18
与包管理器结合
vcpkg · Conan · Hunter + FetchContent
生态包管理
19
跨平台注意事项
Windows路径长度 · Linux权限 · macOS特殊处理
跨平台
20
测试框架集成
Google Test · Catch2 · Boost.Test 下载集成
测试GTest
21
文档生成工具
Doxygen · Sphinx · MkDocs 依赖管理
文档工具
22
代码质量工具
clang-format · cppcheck · sanitizers 下载集成
质量静态分析
23
构建工具链
Ninja · ccache · distcc 下载与配置
构建工具链
24
脚本语言绑定
pybind11 · SWIG · LuaBridge 下载集成
绑定脚本
25
网络库集成
Boost.Asio · libcurl · cpp-httplib
网络
26
序列化库集成
nlohmann/json · protobuf · flatbuffers
序列化json
27
图形与UI库
Dear ImGui · SFML · SDL2 下载集成
图形UI
28
数学与科学计算
Eigen3 · OpenCV · CGAL 依赖管理
数学科学
29
常见错误与解决方案
下载超时 · SSL证书 · Git认证失败 · 磁盘空间不足
排错FAQ
30
未来展望
CMake 4.0 · FetchContent发展方向 · C++模块化与依赖管理
趋势展望