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”作为库 beicodebeison 的源。 从策展目录的内部镜像中找到的所有所有其他端口均托管在 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.jsonportfile.cmake 的端口目录
  • 包含以端口命名的端口目录的目录(zlibvcpkg.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?? 不是有效的模式字符)

请参阅使用注册表文档,详细了解如何解析端口名称。