覆盖端口
通常,vcpkg 端口是从注册表获取的。 你安装的大多数端口很可能来自于 https://github.com/Microsoft/vcpkg 上的官方 vcpkg 注册表。 vcpkg 可让你通过文件系统安装可用的端口,我们将这些端口称为覆盖端口。
覆盖端口可以直接替代现有端口,也可以充当注册表中不可用的新端口。 解析包名称时,优先解析覆盖端口的名称。
按以下顺序计算覆盖端口:
- 通过
--overlay-ports
在命令行中指定的覆盖位置。 - 通过
overlay-ports
在vcpkg-configuration.json
文件中指定的覆盖位置。 VCPKG_OVERLAY_PORTS
环境变量指定的覆盖位置。
解析端口名称时,选择包含匹配覆盖端口的第一个位置。
使用覆盖端口
目录可以表示一组覆盖端口,可通过以下两种方式之一指定:
- 单个覆盖端口:
<directory>/sqlite3
指单个端口 - 覆盖端口目录:
<directory>
指端口目录:有效端口必须同时包含vcpkg.json
和portfile.cmake
。
可以通过多种方式添加覆盖端口:
- 命令行:向 vcpkg 命令添加一个或多个
--overlay-ports=<directory>
选项 - 清单:在
"overlay-ports"
中填充vcpkg-configuration.json
数组 - 环境变量:将
VCPKG_OVERLAY_PORTS
设置为目录路径列表
示例:覆盖端口示例
假设目录结构如下:
名为 team-ports 的覆盖目录包含端口 sqlite3、rapidjson 和 curl。 名为 team-ports 的覆盖目录包含端口 sqlite3 和 rapidjson。 vcpkg 目录包含默认注册表。
运行:
vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports
若要进行安装:
sqlite3
来自my-ports
运行:
vcpkg install sqlite3 rapidjson curl
--overlay-ports=my-ports/rapidjson
--overlay-ports=vcpkg/ports/curl
--overlay-ports=team-ports
若要进行安装:
sqlite3
来自team-ports
rapidjson
来自my-ports
curl
来自 `vcpkg/ports
示例:使用覆盖端口以使用系统包管理器依赖项
若要对 vcpkg 依赖项使用系统包管理器依赖项,请参阅我们的博客文章。