vcpkg-configuration.json 参考
vcpkg-configuration.json
文件组成项目的清单以及 vcpkg.json
的一部分。 vcpkg-configuration.json
文件中的所有字段仅从顶级项目使用 - 忽略任何依赖项中的 vcpkg-configuration.json
文件。
在清单模式下,vcpkg-configuration.json
可以是 vcpkg.json
以外的一个单独文件,或者可以嵌入到 "vcpkg-configuration" field
中。
在经典模式下,vcpkg 将使用 vcpkg 实例中根中的 vcpkg-configuration.json
文件。
请参阅使用注册表,简要了解 vcpkg 如何与注册表一起使用。
可以在 https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json 处获取最新的 JSON 架构。 具有 JSON 架构支持(例如 Visual Studio 和 Visual Studio Code)的 IDE 可以使用此文件提供自动完成和语法检查。 大多数 IDE 应将 vcpkg-configuration.json
中的 "$schema"
设置为此 URL。
示例
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json",
"default-registry": {
"kind": "git",
"repository": "https://internal/mirror/of/github.com/Microsoft/vcpkg",
"baseline": "eefee7408133f3a0fef711ef9c6a3677b7e06fd7"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg-docs",
"reference": "vcpkg-registry",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"packages": [ "beicode", "beison" ]
}
],
"overlay-ports": [
"./team-ports",
"./custom-ports"
],
"overlay-triplets": [ "./my-triplets" ]
}
此示例添加一个专用注册表“https://github.com/microsoft/vcpkg-docs/tree/vcpkg-registry
”作为库 beicode
和 beison
的源。 从策展目录的内部镜像中找到的所有所有其他端口均托管在 https://internal/mirror/of/github.com/Microsoft/vcpkg
。
此示例还为源代码存储库中存在的端口和三联密码配置自定义覆盖。
顶级字段
名称 | Type | 描述 |
---|---|---|
default-registry | 注册表 或 null | 供没有特定注册表的所有端口使用的注册表 |
overlay-ports | string[] | 要用作覆盖端口的路径列表 |
overlay-triplets | string[] | 要用作覆盖三联密码的路径列表 |
registries | Registry[] | 供端口子网使用的其他注册表 |
"default-registry"
供没有额外一个特定注册表的所有端口使用的注册表 注册表或 null。 可选。
与任何 "packages"
模式都不匹配的端口将会解析为默认注册表。 如果默认注册表指定为 null
,则将无法解析不匹配的端口。 如果忽略默认注册表,则会使用 "builtin-baseline"
的值明确设置为本地注册表作为 "baseline"
。
"registries"
供特定端口使用的其他注册表。 一组注册表。 可选。
"overlay-ports"
端口覆盖路径的列表。 一组字符串。 可选。
数组中的每个路径都必须指向其中之一:
- 包含
vcpkg.json
和portfile.cmake
的端口目录 - 包含以端口命名的端口目录的目录(
zlib
的vcpkg.json
必须位于zlib/vcpkg.json
)。
相对路径相对于 vcpkg-configuration.json
文件进行解析。 虽然可以使用绝对路径,但不建议这么做。
"overlay-triplets"
三联密码覆盖路径的列表。 一组字符串。 可选。
数组中的每个路径都必须指向三联密码文件的一个目录(请参阅三联密码文档)。 相对路径相对于 vcpkg-configuration.json
文件进行解析。 虽然可以使用绝对路径,但不建议这么做。
注册表字段
名称 | 必需 | 类型 | 描述 |
---|---|---|---|
基线 | Git 和内置注册表 | string | 此注册表中所有端口的最小版本约束 |
kind | 是 | string | 正在使用的注册表类型 |
包 | 是,如果不是默认 | string | 要来自此注册表的端口列表 |
path | Filesystem 注册表 | string | Filesystem 注册表的路径 |
reference | 否 | string | 供可用版本使用的 Git 参考 |
存储库 | Git 注册表 | string | Git 注册表的 URI |
注册表:"kind"
正在使用的注册表的类型。 一个字符串。 必需。
"kind" 值 |
注册表类型 |
---|---|
"filesystem" |
Filesystem 注册表 |
"git" |
Git 注册表 |
"builtin" |
内置注册表 |
注册表:"baseline"
此注册表中要使用的最低版本的特定于注册表的标识符。 一个字符串。 必需。
如果是 Git 注册表以及内置注册表,这是注册中包含 versions/baseline.json
的存储库中的 40 个字符的 git 提交 sha。
如果是文件系统注册表,它可以是注册表在其 baseline.json
上定义的任何有效 json 属性名称。 如果文件系统注册表未声明基线,则使用的值是 "default"
。
注册表:"reference"
用于列出 Git 注册表可用版本的 Git 参考。 一个字符串。 可选。
如果未指定,默认为HEAD
。 此字段可以是访问尚未完全发布的版本的主题分支。
注册表:"repository"
Git 注册表的 URI。 一个字符串。 必需要有 Git 注册表。
字符串可以是 Git 理解的任何 URI 格式:
"https://github.com/microsoft/vcpkg"
"git@github.com:microsoft/vcpkg"
"/dev/vcpkg-registry"
相对路径具有在 vcpkg 的未来版本中将更改的未指定行为。
注册表:"path"
Filesystem 注册表的路径。 一个字符串。 Filesystem 注册表是必需的。
相对路径相对于 vcpkg-configuration.json
进行解析。
注册表:"packages"
分配给此注册表的端口模式列表。 字符串数组。 除 "default-registry"
以外的所有注册表都是必需的。
每个条目必须是以下任一项:
- 包的名称
- 包名称前缀,后接
*
(工具版本 2022-12-14 中新增)
包模式只能包含小写字母、数字,以及 -
可选的尾随 *
。
有效模式的示例:
*
:匹配所有端口名称boost
:仅匹配端口boost
b*
:匹配以字母开头的端口b
boost-*
:匹配以前缀开头的端口boost-
无效模式的示例:
*a
(*
必须是前缀中的最后一个字符)a**
(只允许一个*
)a+
(+
不是有效的模式字符)a?
(?
不是有效的模式字符)
请参阅使用注册表文档,详细了解如何解析端口名称。