用途:vcpkg 是微软的 C/C++ 包管理器,用于在工程中安装第三方依赖、管理依赖版本,并进行跨平台构建与交叉编译。
主要能力:支持清单模式(per-project 的 vcpkg.json)和经典模式(全局安装)。清单模式可跟踪项目级依赖、支持版本约束与 overrides、通过 builtin-baseline 实现可复现构建,并支持仅开发依赖、自定义注册表与 overlay ports,适合接入 CI/CD。经典模式适合快速的单次安装,但不支持版本固定与项目级隔离。
使用方式:在项目根目录创建 vcpkg.json 声明 dependencies,并通过 CMake 的 vcpkg 工具链接入:cmake -B build -DCMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmake。安装时可指定 feature,清单模式写在 dependencies 数组中,经典模式使用 vcpkg install curl[ssl,http2] 的括号语法;可用 vcpkg search <port> 查看可用 feature。指定 triplet 用 vcpkg install zlib:x64-linux 或设置 VCPKG_TARGET_TRIPLET。Visual Studio 中清单模式可优先使用 VS 内置的 vcpkg,经典模式使用独立安装,并可用 vcpkg integrate install 做用户级集成。
版本管理:优先使用 version>= 做最低版本约束,需要硬固定时使用 overrides;被选中的注册表必须提供 baseline,内置注册表用 builtin-baseline。
跨平台:安装 arm64-linux 等目标包后,VCPKG_TARGET_TRIPLET 只影响依赖二进制,不切换编译器或 sysroot,需配合交叉工具链的 CMake 配置;Android 可用 arm64-android 等 triplet,并设置 ANDROID_NDK_HOME。arm64-windows 在 x64 主机上需安装 MSVC ARM64 构建工具。
限制:资料未提供收费、价格或平台支持范围的更多信息;经典模式缺少版本固定与可复现性;交叉编译仍需外部工具链配合。若不确定当前使用的是经典模式还是清单模式,应先向用户确认;若用户不确定,建议使用清单模式。