0Pricing
C++ Academy · 课时

使用 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=missing

conanfile.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.cmake

FetchContent: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 反馈 — 无需本地设置。

此课程中的所有课时

  1. CMake 项目布局与 CMakeLists.txt
  2. 目标、链接与可见性:PUBLIC、PRIVATE
  3. 使用 vcpkg 和 Conan 管理依赖
  4. 生成 IDE 文件与跨平台构建
← 返回 C++ Academy