vcpkg在Windows上通过下载、构建、注册三步管理C++库,不修改系统目录或注册表;需用Git克隆源码并运行bootstrap-vcpkg.bat构建工具,再通过vcpkg install安装指定triplet的库,最后在CMake中设置CMAKE_TOOLCHAIN_FILE路径以集成。
Windows 上用 vcpkg 安装 C++ 第三方库,本质是「下载、构建、注册三步走」,不是传统意义的“安装”——它不往系统目录写文件,也不改注册表,而是把编译好的库和头文件统一管理在本地路径下,再通过项目集成方式暴露给你的 CMake 或 Visual Studio 工程。
你得先有 Git 和一个能执行 PowerShell / CMD 的环境(推荐用 Windows Terminal)。打开终端,cd 到你想放 vcpkg 的目录(比如 D:\dev\vcpkg),然后运行:
git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat
这一步会下载源码、编译 vcpkg.exe 本体。注意:bootstrap-vcpkg.bat 默认调用的是系统已安装的 Visual Studio 工具链(如 VS2025 的 VisualStudio.17.0),如果你只装了 Build Tools,可能需要手动指定工具集,例如:
vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 确认工具链 ID.\bootstrap-vcpkg.bat -useSystemBinaries(跳过自带编译器,复用系统已有工具)命令很简单:vcpkg install jsoncpp,但背后有几个关键点:
x64-windows 三元组(即 64 位 Windows 动态链接版),如果要静态链接,得用 vcpkg install jsoncpp:x64-windows-static
--triplet 显式指定,例如:vcpkg install jsoncpp:x64-windows --debug(注意:--debug 不是安装 debug 版,而是启用调试输出)HTTP_PROXY 或改用国内镜像源(需修改 vcpkg/scripts/git-fetch.sh 或用 vcpkg integrate install 后手动替换 ports/ 下的 URL)vcpkg 不自动注入环境变量,必须显式告诉 CMake 去哪找包。最稳妥的方式是在 CMakeLists.txt 开头加:
set(CMAKE_TOOLCHAIN_FILE "D:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake")
路径必须是绝对路径,且指向你本地 vcpkg 目录下的 scripts/buildsystems/vcpkg.cmake。如果你用的是 VS + CMake 集成,也可以在 VS 的 CMake 设置里填这个路径,而不是硬编码进 CMakeLists.txt。
另外注意:vcpkg integrate install 这个命令只是把 vcpkg 注册为 Visual Studio 的全局 NuGet 源(已废弃),对现代 CMake 项目基本没用,别被旧教程误导。
常见原因不是库没装,而是「三元组不匹配」或「CMake 构建类型不一致」:
vcpkg install xxx:x64-windows-static 装的,但 CMake 默认生成的是动态链接项目(CMAKE_MSVC_RUNTIME_LIBRARY 是 MultiThreadedDLL),就会链接失败find_package(jsoncpp REQUIRED),但没在 find_package 前设置 CMAKE_TOOLCHAIN_FILE,CMake 根本不会去 vcpkg 目录扫描boost)默认不导出所有组件,得写全名:find_package(Boost REQUIRED COMPONENTS system filesystem)
最直接的验证方式是运行 vcpkg list 看是否真装上了,再检查 vcpkg\installed\x64-windows\(或对应 triplet)下有没有 include/ 和 lib/ 目录。
真正容易被忽略的是:vcpkg 的 triplet 是构建时绑定的,不是运行时切换的。你换了一个 triplet(比如从 x64-windows 改成 x64-windo),就得重新 
vcpkg install,而且 CMake cache 必须清空,否则旧路径残留会导致静默失败。