使用 vcpkg 和 Conan 管理依赖
使用 vcpkg 和 Conan 获取外部库,并将其集成到 CMake 中
使用 vcpkg 和 Conan 管理依赖 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。
为什么使用包管理器
手动下载和构建 C++ 依赖项十分繁琐。包管理器可以自动获取、构建和配置第三方库。
两种主流选项
两种主流的 C++ 包管理器:
- vcpkg — 由 Microsoft 支持,仅使用源码,并与 CMake 集成
- Conan — 开源,支持二进制包,更加灵活
vcpkg 设置
克隆 vcpkg 仓库并完成引导设置。在调用 CMake 时设置工具链文件。
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && ./bootstrap-vcpkg.sh
./vcpkg install fmt spdlog在 CMake 中使用 vcpkg 进行链接
配置 CMake 时传入工具链文件。之后,find_package 即可照常工作。
cmake -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake使用 vcpkg.json(清单模式)
在 vcpkg.json 文件中声明依赖项。vcpkg 会为每个项目安装这些依赖项。
{
"name": "my-app",
"version-string": "0.1.0",
"dependencies": ["fmt", "spdlog", "nlohmann-json"]
}Conan 设置
使用 pip 安装 Conan;创建 conanfile.txt 或 conanfile.py。
pip install conan
conan profile detect
conan install . --build=missingconanfile.txt 示例
列出依赖项、生成器和选项。
[requires]
fmt/10.1.1
spdlog/1.12.0
[generators]
CMakeDeps
CMakeToolchain将 Conan 集成到 CMake
运行 install 时,Conan 会生成 CMake 文件。请通过工具链文件使用这些文件,或直接包含生成的 CMake 文件。
cmake -B build -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmakeFetchContent:CMake 原生替代方案
对于简单情况,CMake 内置了 FetchContent,可以在配置时下载并添加依赖项。
include(FetchContent)
FetchContent_Declare(fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 10.1.1
)
FetchContent_MakeAvailable(fmt)
target_link_libraries(myapp PRIVATE fmt::fmt)选择工具
快速指南:
- 小型项目 →
FetchContent - 大型项目、简单依赖项 →
vcpkg - 复杂构建、二进制缓存 →
Conan
可复现构建
在清单中固定具体版本。锁定文件(conan.lock)会记录准确解析出的版本,以确保可复现性。
缓存二进制文件
Conan 和 vcpkg 都支持二进制缓存,因此持续集成构建的速度可以提升数个数量级。请为团队设置共享缓存。
快速检查
哪种 CMake 机制可以在配置时下载并构建依赖项,而不需要外部工具?
回顾
vcpkg 和 Conan 能够自动管理 C++ 依赖项。CMake 的 FetchContent 是一种轻量级替代方案。请固定版本、缓存二进制文件,并在 CMake 中使用 find_package 使用已安装的库。
常见问题解答
「使用 vcpkg 和 Conan 管理依赖」课时是免费的吗?
是的 — 「使用 vcpkg 和 Conan 管理依赖」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。
「使用 vcpkg 和 Conan 管理依赖」这节课中我会学到什么?
使用 vcpkg 和 Conan 获取外部库,并将其集成到 CMake 中 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C++ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 vcpkg 和 Conan 管理依赖」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C++ Academy 课中编写并运行代码吗?
能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CMake 项目布局与 CMakeLists.txt
- 目标、链接与可见性:PUBLIC、PRIVATE
- 使用 vcpkg 和 Conan 管理依赖
- 生成 IDE 文件与跨平台构建