如果文章有任何不正确或者你觉得可以补充的建议,欢迎留言,我希望这篇文章可以成为后来人做选择时的速查手册
面对复杂的C++依赖,选对工具能让你事半功倍。这份速查手册让你三分钟内找到最适合你的包管理器,并掌握其核心用法。
选 vcpkg,如果你是:Windows/Visual Studio 用户,追求与IDE无缝集成,需要简单快速上手。
选 Conan,如果你是:参与企业级大型项目,依赖关系复杂,需要强大的版本管理和团队协作能力。
选 xmake,如果你是:国内开发者或学生,追求极简安装和配置,希望避开网络环境问题。
| 维度 | vcpkg (微软) | Conan (社区) | xmake (国产) |
|---|---|---|---|
| 核心理念 | 简单集成,开箱即用 | 灵活强大,企业级方案 | 极简体验,一站解决 |
| 学习曲线 | 低 | 中高 | 极低 |
| 网络友好度 | 良(可配镜像) | 良(可配镜像) | 优(内置优化) |
| VS集成度 | 完美 | 良好 | 良好 |
# 1. 克隆仓库
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
# 2. 执行引导脚本
# Windows:
.\bootstrap-vcpkg.bat
# Linux/macOS:
./bootstrap-vcpkg.sh
# 3. 安装包
vcpkg install fmt boost
# 4. 集成到VS(全局)
vcpkg integrate install
# 5. 移除集成
vcpkg integrate remove
# CMakeLists.txt 示例
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 查找包
find_package(fmt REQUIRED)
add_executable(my_app main.cpp)
# 链接库
target_link_libraries(my_app PRIVATE fmt::fmt)
编译命令(需传递工具链):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake
cmake --build build
镜像加速:在 vcpkg-configuration.json 中配置清华/中科大镜像
仅安装头文件库:vcpkg install header-only-library
查看已安装包:vcpkg list
# 安装(Python pip方式)
pip install conan
# 生成默认配置
conan profile detect --force
# 创建并进入构建目录
mkdir build && cd build
# 1. 搜索包
conan search fmt --remote=conancenter
# 2. 创建conanfile.txt(或.py用于复杂配置)
# conanfile.txt 内容示例:
[requires]
fmt/10.1.1
[generators]
CMakeDeps
CMakeToolchain
# 3. 安装依赖
conan install .. --output-folder=. --build=missing
# 4. 构建(配合CMake)
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
# 创建自己的conan包
conan new hello/1.0 -m=cmake_lib
# 本地打包
conan create .
# 上传到私有仓库
conan upload hello/1.0 -r=my-remote --all
# 一键安装
curl -fsSL https://xmake.io/shget.text | bash
# 或通过其他包管理器安装
# 创建新项目
xmake create my_project
# 进入项目
cd my_project
# 添加依赖(编辑xmake.lua或通过命令)
xmake require fmt
# 配置项目
xmake config --mode=debug
# 构建
xmake
# 运行
xmake run
# 调试
xmake run -d
-- xmake.lua 最小示例
add_rules("mode.debug", "mode.release")
target("my_app")
set_kind("binary")
add_files("src/*.cpp")
add_packages("fmt", "spdlog")
首选 vcpkg:
安装 vcpkg 并全局集成
在VS中直接 #include <library> 无需额外配置
使用 vcpkg install 安装的库自动对VS可见
首选 Conan:
在 conanfile.py 中精确定义依赖版本和配置
使用 conan lock 创建版本锁文件确保一致性
通过 Artifactory 搭建私有仓库,管理内部二进制包
首选 xmake:
一个 xmake.lua 文件统一管理构建和依赖
无需编写复杂的CMakeLists.txt
支持中文错误信息,对新手友好
渐进式方案:
初期:保留CMake,用 vcpkg 管理依赖(通过工具链集成)
中期:部分模块使用 Conan 管理,CMake + Conan 混合
长期:评估是否需要完全迁移到 xmake(需重写构建配置)
所有工具通用:
# 配置国内镜像源
# vcpkg: 配置 vcpkg-configuration.json
# Conan: conan remote add 镜像源
# xmake: 默认已优化,也可通过 xmake g --proxy=xxx 配置
vcpkg:使用 --binarycaching 开启二进制缓存
Conan:上传二进制包到私有仓库,避免重复编译
xmake:使用 xmake build --jobs=8 并行编译
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 找不到包 | 拼写错误或版本不存在 | 使用工具搜索功能确认包名 |
| 链接错误 | 库版本与编译器不兼容 | 检查库支持的编译器版本 |
| CMake找不到包 | 工具链未正确传递 | 确认 -DCMAKE_TOOLCHAIN_FILE 参数 |
清点现有依赖:整理所有第三方库名称、版本、编译选项
选择目标工具:根据团队情况选择上述任一工具
逐步迁移:从非关键依赖开始,逐个替换
| 迁移方向 | 关键步骤 | 注意事项 |
|---|---|---|
| vcpkg → Conan | 1. 创建conanfile 2. 替换CMake集成方式 | 注意二进制兼容性和版本差异 |
| Conan → xmake | 1. 编写xmake.lua 2. 重新配置构建流程 | xmake的包可能比Conan少 |
vcpkg:vcpkg export 命令可导出已安装包,便于离线环境使用
Conan:掌握 conan graph 和 conan info 分析依赖关系
xmake:探索 xmake package 打包功能和插件系统
总结:没有“最好”的工具,只有“最合适”的工具。对于大多数开发者:
日常开发选 vcpkg,省心省力
复杂项目选 Conan,可控可管
国内环境选 xmake,简单直接
立即行动建议:从一个小型测试项目开始,用一天时间分别尝试三个工具的基本流程,亲身感受后做出选择。