1. vcpkg 介绍
vcpkg 是微软 C++ 团队和社区共同维护的一款免费开源的 C/C++ 包管理器,支持 Windows、macOS 和 Linux 三大平台。它专为解决 C++ 库管理的痛点而设计,核心使用 C++ 和 CMake 脚本实现。
核心特点
- 简单易用
- 一键下载并构建流行库,自动处理上游依赖和版本冲突
- 支持命令行操作或
vcpkg.jsonmanifest 文件声明依赖 [[6]] - 提供详细文档和活跃的社区支持
- 跨平台通用
- 支持任意操作系统、构建系统(CMake/MSBuild/Makefile等)、目标架构、IDE 和 CI 流程
- 库从源码构建,可按需配置
- 可靠一致
- 本地开发与 CI/CD 工作流保持一致
- 可锁定依赖版本,团队共享依赖生态
- 丰富生态
- 当前注册表提供 2,773+ 个开源库端口(ports)
- 支持创建私有 registry 管理自定义或企业内部库
🛠️ 关键概念
| 概念 | 说明 |
|---|---|
| Ports | 版本化的构建配方(CMake 脚本),描述如何下载、构建和安装一个库 |
| Triplets | 描述目标构建环境(CPU/OS/编译器/运行时等),默认提供 70+ 种配置,也支持自定义 |
| Binary Caching | 将构建好的包缓存,避免重复构建,加速团队和 CI 构建 |
| Manifests | vcpkg.json 文件声明项目依赖,可纳入版本控制共享 |
| Versioning | 通过 baseline 机制管理兼容的版本集合,避免钻石依赖问题 |
2. 安装使用
2.1 安装 vcpkg
① 下载
bash
# Windows (PowerShell)
git clone https://github.com/microsoft/vcpkg.git
# Linux/macOS
git clone https://github.com/microsoft/vcpkg.git
注意:此命令在
vcpkg子目录中创建存储库的本地副本。 此位置是此 vcpkg 克隆的 vcpkg 根目录。在安装这个之前需要先安装 git,参考文章:【2025年最新版】Git安装及环境配置超详细教程(以win11为例子)_git安装及配置教程
或者去官网下载压缩包也行,然后再解压
这里的话我安装的肯定就是 Windows 版本的了
② 安装
在 vcpkg 根目录下,运行 vcpkg 引导程序命令:
bash
.\vcpkg\bootstrap-vcpkg.bat # Windows 使用
./vcpkg/bootstrap-vcpkg.sh # Linux 使用
引导程序将使用 Microsoft C/C++ 工具、库和 Windows SDK 的位置配置 vcpkg。
安装过程如下:
bash
PS D:\includes\vcpkg> .\bootstrap-vcpkg.bat
Downloading https://github.com/microsoft/vcpkg-tool/releases/download/2026-04-08/vcpkg.exe -> D:\includes\vcpkg\vcpkg.exe... done.
Validating signature... done.
vcpkg package management program version 2026-04-08-e0612b42ce44e55a0e630f2ee9d3c533a63d8bc1
See LICENSE.txt for license information.
Telemetry
---------
vcpkg collects usage data in order to help us improve your experience.
The data collected by Microsoft is anonymous.
You can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics,
passing --disable-metrics to vcpkg on the command line,
or by setting the VCPKG_DISABLE_METRICS environment variable.
Read more about vcpkg telemetry at docs/about/privacy.md
运行后结果:
- 脚本会自动下载并编译 vcpkg 核心程序
- 成功后会在当前目录生成
vcpkg.exe - 之后即可使用
.\vcpkg install <库名>安装第三方库
注意事项
- 如果网络较慢或下载中断,可添加
--head参数使用最新源码构建,或配置国内镜像/代理加速。 - 引导完成后,推荐运行
.\vcpkg integrate install将 vcpkg 注册到全局环境(VS/MSBuild 自动识别),或在 CMake 中通过工具链文件使用。
2.2 相关命令
| Command | 描述 |
|---|---|
vcpkg search [pat] |
搜索可安装的包 |
vcpkg install <pkg>... |
安装包 |
vcpkg remove <pkg>... |
卸载包 |
vcpkg remove --outdated |
卸载所有过期包 |
vcpkg list |
列出已安装的包 |
vcpkg update |
显示用于更新的包列表 |
vcpkg upgrade |
重新生成所有过期包 |
vcpkg hash <file> [alg] |
通过特定算法对文件执行哈希操作,默认为 SHA512 |
vcpkg integrate install |
使已安装包在用户范围内可用。 首次使用时需要管理权限 |
vcpkg integrate remove |
删除用户范围的集成 |
vcpkg integrate project |
为使用单个 VS 项目生成引用 NuGet 包 |
vcpkg export <pkg>... [opt]... |
导出包 |
vcpkg edit <pkg> |
打开端口进行编辑(使用 %EDITOR%,默认为"code") |
vcpkg create <pkg> <url> [archivename] |
创建新程序包 |
vcpkg cache |
列出缓存的已编译包 |
vcpkg version |
显示版本信息 |
vcpkg contact --survey |
显示联系信息,以便发送反馈。 |
选项
| 选项 | 描述 |
|---|---|
--triplet <t> |
指定目标体系结构三元组。 (默认:%VCPKG_DEFAULT_TRIPLET%,另请参阅 vcpkg help triplet) |
--vcpkg-root <path> |
指定 vcpkg 根目录(默认:%VCPKG_ROOT%) |
2.3 全局使用 vcpkg(避免每次输 .\)
powershell
# 1. 将 vcpkg 添加到系统 PATH(临时)
$env:Path = "D:\includes\vcpkg;" + $env:Path
# 2. 或执行集成命令(推荐,对 Visual Studio/MSBuild 生效)
.\vcpkg integrate install
# 3. 之后就可以在任何位置直接使用:
vcpkg install nlohmann-json
3. 集成vcpkg
3.1 Windows 上的 Visual Studio 集成
从 vcpkg 根目录,运行 vcpkg integrate install 来配置 Visual Studio,以便按用户找到所有 vcpkg 头文件和二进制文件。 无需在 Visual Studio 中编辑 VC + + 目录路径。 如果有多个 vcpkg 克隆,则我们需从中运行此命令的克隆将成为新的默认位置。
现在,只需键入文件夹/标头名称即可轻松加入标头,并且自动完成功能将帮助完成这一切。 无需执行任何额外的步骤即可链接到库或添加项目引用。 下图演示了 Visual Studio 查找 azure-storage-cpp 标头的方法。 Vcpkg 将其标头置于 /installed 子文件夹中,由目标平台予以分区。
下图显示库的 /was 子文件夹中包含文件的列表:

3.2 Linux 或 macOS 上的 Visual Studio Code 集成
在 shell 或"终端"窗口中,将目录更改为 vcpkg 根目录。 然后运行./vcpkg integrate install,在 Linux 或 macOS 上配置 Visual Studio Code。 此命令将设置 vcpkg 工具和库的位置,并对源文件启用 IntelliSense。
3.3 删除 vcpkg 集成
如果已使用 integrate 选项,则应在删除 vcpkg 实例之前删除该集成。 若要删除和清理该集成,请将目录更改为 vcpkg 根目录。
- 在 Windows 上,运行
vcpkg integrate remove,确保清除该集成。 - 在 Linux 或 macOS 上,运行
./vcpkg integrate remove命令。
4. 示例
举例:我现在的场景是我需要 libpng 来进行开发,输入如下命令来安装,可以看到在开始自动下载。
bash
# 安装依赖
.\vcpkg install libpng

注意我们可以使用
.\vcpkg help triplet来看库支持的模式。
powshell
PS D:\includes\vcpkg> .\vcpkg help triplet
Built-in Triplets:
arm-neon-android
arm64-android
arm64-linux
arm64-osx
arm64-windows-static-md
arm64-windows
x64-android
x64-linux
x64-windows-release
x64-windows-static-md
x64-windows-static
x64-windows
x86-windows
Community Triplets:
arm-android
arm-ios
arm-linux-release
arm-linux
arm-mingw-dynamic
arm-mingw-static
arm-uwp-static-md
arm-uwp
arm-watchos
arm-windows-static
arm-windows
arm64-android-release
arm64-freebsd
arm64-ios-release
arm64-ios-simulator-release
arm64-ios-simulator
arm64-ios
arm64-linux-dynamic
arm64-linux-release
arm64-mingw-dynamic
arm64-mingw-static
arm64-osx-dynamic
arm64-osx-release
arm64-tvos-simulator
arm64-tvos
arm64-uwp-static-md
arm64-uwp
arm64-visionos
arm64-watchos-simulator
arm64-watchos
arm64-windows-static-release
arm64-windows-static
arm6432-watchos
arm64ec-windows
armv6-android
loongarch32-linux-release
loongarch32-linux
loongarch64-linux-release
loongarch64-linux
mips64-linux
ppc64le-linux-release
ppc64le-linux
riscv32-linux-release
riscv32-linux
riscv64-linux-release
riscv64-linux
s390x-linux-release
s390x-linux
wasm32-emscripten
x64-freebsd-dynamic
x64-freebsd-release
x64-freebsd
x64-ios
x64-linux-dynamic
x64-linux-release
x64-mingw-dynamic-release
x64-mingw-dynamic
x64-mingw-static-release
x64-mingw-static
x64-netbsd
x64-openbsd
x64-osx-dynamic
x64-osx-release
x64-osx
x64-solaris
x64-tvos-simulator
x64-uwp-static-md
x64-uwp
x64-watchos-simulator
x64-windows-static-md-release
x64-windows-static-release
x64-xbox-scarlett-static
x64-xbox-scarlett
x64-xbox-xboxone-static
x64-xbox-xboxone
x86-android
x86-freebsd
x86-ios
x86-linux
x86-mingw-dynamic-release
x86-mingw-dynamic
x86-mingw-static-release
x86-mingw-static
x86-uwp-static-md
x86-uwp
x86-windows-static-md
x86-windows-static
x86-windows-v120
See https://learn.microsoft.com/vcpkg/users/triplets?WT.mc_id=vcpkg_inproduct_cli for more information.
删除库
powershell
.\vcpkg.exe remove jsoncpp
这个时候只是移除了默认的x86-winodws版本的文件,如果有其他平台的版本需要移除,需要制定相应的triplet。
移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除。
查看已经安装的列表
powershell
.\vcpkg.exe list
更新已经安装的开源库
一般有两种更新方式。
- update指令,可以显示可以升级的开源库的列表。
- upgrade的指令,会重新编译所有需要更新的包。
报错解决
问题一:Unable to find a valid Visual Studio instance
表示编译环境缺失
解决方案如下:
方案 1:安装 Visual Studio Build Tools(推荐,轻量)
这是微软官方提供的独立构建工具包,无需安装完整 VS IDE。
步骤:
-
下载:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
-
运行安装程序,务必勾选 :
- ✅ C++ 生成工具(核心编译器)
- ✅ Windows 10/11 SDK(系统 API)
- ✅ MSVC v143 生成工具(或最新版本)
- ✅ C++ CMake 工具(可选,但推荐)
-
安装完成后重启终端 (或执行
vswhere验证) -
重试:
powershell.\vcpkg install openssl
验证是否安装成功:
powershell
# 方法 1:官方工具
vswhere -latest -requires Microsoft.Component.MSBuild
# 方法 2:检查编译器
where cl.exe
# 应返回类似: C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\...\cl.exe
方案 2:使用已安装的完整 Visual Studio
如果当前电脑已经安装了 Visual Studio 2019/2022(非 Build Tools):
- 打开 Visual Studio Installer
- 点击 "修改" → 确保勾选:
- 使用 C++ 的桌面开发 工作负载
- Windows 10/11 SDK
- 应用更改后重启终端
- 重试安装
💡 完整 VS 和 Build Tools 可以共存,vcpkg 会自动检测最新/最合适的实例。