一、vcpkg 简介
vcpkg 是微软开发的 C++ 包管理器,用于简化 C++ 库的获取、编译和集成过程。它包含超过 2000 个开源库的精选注册表,这些库经过 vcpkg 的持续集成管道验证,确保可以协同工作。
二、安装和设置
1. 克隆 vcpkg 仓库
1 | git clone https://github.com/microsoft/vcpkg.git |
vcpkg 仓库包含:
- 获取 vcpkg 可执行文件的脚本
- 由 vcpkg 社区维护的精选开源库注册表
- 构建和安装库所需的配方和元数据(不包含库源代码)
2. 运行引导脚本
1 | # Windows (PowerShell) |
引导脚本会:
- 执行先决条件检查
- 下载 vcpkg 可执行文件
3. 设置环境变量
1 | # PowerShell |
作用:
VCPKG_ROOT:帮助 Visual Studio 定位 vcpkg 实例- 添加到
PATH:确保可以直接从命令行运行 vcpkg 命令 - 执行:
vcpkg integrate install
三、核心文件详解
1. vcpkg.json(清单文件)
这是项目的依赖清单文件,定义项目所需的包。
1 | { |
作用:
- 声明项目依赖的库
- vcpkg 读取此文件以了解需要安装哪些依赖项
- 与 CMake 集成,为项目提供所需的依赖项
- 应纳入版本控制
- 运行
vcpkg install会根据vcpkg.json安装依赖
创建方法:
1 | vcpkg new --application # 创建清单文件 |
2. vcpkg-configuration.json(配置文件)
1 | { |
作用:
- 引入基线(baseline),对项目依赖项设置最低版本约束
- 确保不同开发环境之间的版本一致性
- 建议纳入版本控制
- 通常由
vcpkg new自动生成,一般不需手动修改
3. CMakePresets.json(CMake 预设文件)
1 | { |
作用:
- 配置 CMake 使用 vcpkg 的工具链文件
- 设置
CMAKE_TOOLCHAIN_FILE指向 vcpkg 的自定义工具链 - 使 CMake 能够自动链接 vcpkg 安装的库
- 定义构建预设(生成器、输出目录等)
- 应纳入版本控制,团队共享
关键配置:
CMAKE_TOOLCHAIN_FILE:vcpkg 与 CMake 集成的核心- 路径:
$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake
4. CMakeUserPresets.json(用户级预设文件 可选)
1 | { |
作用:
- 设置用户特定的配置(如本地 vcpkg 路径)
- 继承
CMakePresets.json中的预设 - 不应纳入版本控制(因为包含特定于用户的路径)
- 一般不需要配置,只需要在环境变量中配置好
VCPKG_ROOT+CMakePresets.json指定CMAKE_TOOLCHAIN_FILE即可
5. CMakeLists.txt(CMake 构建脚本)
1 | cmake_minimum_required(VERSION 3.10) |
各行作用:
cmake_minimum_required(VERSION 3.10):指定 CMake 最低版本要求project(HelloWorld):设置项目名称find_package(fmt CONFIG REQUIRED):查找 fmt 库的 CMake 配置文件CONFIG:使用库的 CMake 配置模式REQUIRED:未找到时生成错误
add_executable(HelloWorld helloworld.cpp):创建可执行目标target_link_libraries(HelloWorld PRIVATE fmt::fmt):链接 fmt 库PRIVATE:依赖仅用于构建,不传播到其他项目
四、工作流程
1. 初始化项目
1 | vcpkg new --application # 创建 vcpkg.json 和 vcpkg-configuration.json |
2. 配置 CMake
- 创建/修改
CMakePresets.json - 创建
CMakeUserPresets.json(设置本地路径) - 编写
CMakeLists.txt
3. 构建和运行
1 | cmake --preset=default # 配置项目 |
在 Visual Studio 中:
- 使用 “Build > Build All” 构建
- 使用 “Debug > Start” 运行
五、vcpkg 工作原理
清单模式(Manifest Mode)
- vcpkg 读取
vcpkg.json自动安装依赖 - 依赖安装到项目本地(而非全局)
- 更适合现代 C++ 项目管理
CMake 集成
- vcpkg 提供自定义工具链文件
- CMake 通过工具链文件找到 vcpkg 安装的库
find_package()自动定位库的配置文件- 自动配置包含路径和链接库
六、最佳实践
版本控制
- ✅ 纳入:
vcpkg.json、vcpkg-configuration.json、CMakePresets.json - ❌ 不纳入:
CMakeUserPresets.json、build/目录
- ✅ 纳入:
环境变量
- 设置
VCPKG_ROOT环境变量(永久性设置更佳) - 添加到 PATH 以便命令行使用
- 设置
依赖管理
- 使用清单模式而非全局安装
- 定期更新基线以获取安全更新
跨平台开发
- vcpkg 支持 Windows、Linux、macOS
- 使用相同的清单文件在不同平台工作
七、常用命令
1 | vcpkg new --application # 初始化项目 |
八、使用优化
linux优化
保存为 setup_vcpkg_opt.sh:
1 | #!/bin/bash |
1 | source ~/.bashrc |

1 | export PATH=$VCPKG_ROOT:$PATH |
添加CMAKE_PREFIX_PATH
1 | mkdir -p ~/.config/cmake |
windows优化
- 在环境变量中添加path
- 添加
VCPKG_BINARY_SOURCES,内容为clear;files,C:\Users\Jianzhe\tools\vcpkg\.vcpkg-cache,readwrite - 添加
VCPKG_MAX_CONCURRENCY,内容为核心数量,如16 - 添加
VCPKG_USE_NINJA,内容为1