该文件 vcpkg-configuration.json vcpkg.json 一起构成了项目 清单 的一部分。 文件中的所有字段 vcpkg-configuration.json 仅从顶级项目使用 -- vcpkg-configuration.json 任何依赖项中的文件将被忽略。

清单模式下 vcpkg-configuration.json 可以位于旁边的 vcpkg.json 单独文件中,也可以嵌入到 中 "vcpkg-configuration" field

经典模式下 ,vcpkg 将使用 vcpkg-configuration.json vcpkg 实例根目录中 的文件。

有关将注册表与 vcpkg 配合使用的概述,请参阅 使用注册表

最新的 JSON 架构在 上 https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json 提供。 支持 JSON 架构的 IDE(如 Visual Studio 和 Visual Studio Code)可以使用此文件来提供自动完成和语法检查。 对于大多数 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/northwindtraders/vcpkg-registry", "baseline": "dacf4de488094a384ca2c202b923ccc097956e0c", "packages": [ "beicode", "beison" ] "overlay-ports": [ "./team-ports", "./custom-ports" "overlay-triplets": [ "./my-triplets" ]

此示例添加一个专用注册表 https://github.com/northwindtraders/vcpkg-registry ,作为库 beicode beison 的源。 所有其他端口都是从 托管的策展目录的内部镜像中找到的 https://internal/mirror/of/github.com/Microsoft/vcpkg

该示例还为源代码存储库中存在的端口和三元组配置自定义覆盖。

"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 解析。 可以使用绝对路径,但不建议使用。

    注册表字段

    注册表 "baseline"

    要从此注册表使用的最低版本的特定于注册表的标识符。 一个字符串。 必需。

    对于 Git 注册表 内置注册表 ,它应该是注册表存储库中包含 versions/baseline.json 的 40 个字符的 git commit sha。

    对于 文件系统注册表 ,它可以是注册表定义的任何有效基线字符串。

    注册表 "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"

    文件系统注册表 的路径。 一个字符串。 文件系统注册表是必需的。

    相对路径相对于 vcpkg-configuration.json 解析。

    注册表 "packages"

    分配给此注册表的端口模式列表。 字符串数组。 对于 外部 "default-registry" 的所有注册表是必需的。

    每个条目都必须是:

  • 包名称前缀,后跟 * 工具 版本 2022-12-14 中添加 的 ()
  • 包模式只能包含小写字母、数字和 - ,并带有可选的尾随 *

    有效模式的示例:

  • * :匹配所有端口名称
  • boost :仅匹配端口 boost
  • b* :匹配以字母开头的端口 b
  • boost-* :匹配以 前缀开头的端口 boost-
  • 无效模式的示例:

  • *a * (必须是前缀) 中的最后一个字符
  • a** (只允许一个 * )
  • a+ ( + 不是有效的模式字符)
  • a? ( ? 不是有效的模式字符)
  • 有关如何解析端口名称的详细信息,请参阅 使用注册表文档