教程:使用 Git 将包发布到专用 vcpkg 注册表

可以使用 Git 通过 vcpkg 创建专用的包注册表来供自己使用。 如果要使用专用库或想要对现有包进行非公共修改,则最好是选择使用专用注册表。 你可以完全控制包的版本和内容,因此可以不受限制地将任何内容放入专用注册表中。

在本教程中,我们将会介绍如何:

先决条件:

  • vcpkg
  • Git
  • 终端

1 - 使用 Git 创建 vcpkg 注册表

vcpkg 的基于 Git 的注册表是具有 vcpkg 能够理解的特定布局的 Git 注册表。

初始化 Git 注册表:

mkdir vcpkg-registry
cd vcpkg-registry
git init

2 - 创建注册表布局

vcpkg 基于 Git 的注册表需要以下各项:

  • 一个名为“ports”的文件夹,其中包含注册表的端口,
  • 一个名为“versions”的文件夹,其中包含版本数据库,
  • versions 文件夹一个名为“baseline.json”的文件。

存储库可以包含所需的任何其他文件,例如:脚本、许可文件、README.md 文件、文档等。

1 - 创建 portsversions 文件夹:

mkdir ports
mkdir versions

baseline.json 文件夹中创建名为“versions”的文件,其中包含以下内容:

{
  "default": {}
}

有效的 baseline.json 文件应该至少包含上述内容。 请参阅版本控制文档,详细了解 baseline.json 文件和版本数据库。

3 - 对存储库进行更改

git add versions/baseline.json
git commit -m "Initial commit"

(可选)如果设置了远程 Git 存储库,则可以推送更改。

git remote add origin https://example.com/vcpkg-registry.git
git push --set-upstream origin HEAD

3 - 向注册表添加端口

复制注册表中 ports 文件夹中的所有包端口。 每个端口必须具有其自己的目录,其中包含至少一个 vcpkg.json 文件和一个 portfile.cmake 文件。 请参阅关于打包 GitHub 存储库,详细了解如何创建端口。

git add ports/.
git commit -m "Add registry ports"

4 - 更新版本数据库

注册表中的每个端口都必须有相应的版本文件。 版本文件由 vcpkg x-add-version 命令生成。 此命令还会更新 version/baseline.json 中的每个端口的基线条目。

若要一次性更新版本数据库,请运行:

vcpkg --x-builtin-ports-root=./ports --x-builtin-registry-versions-dir=./versions x-add-version --all --verbose

--x-builtin-ports-root--x-builtin-registry-versions-dir 是重定向选项。 x-add-version 命令通常在 vcpkg 的内置注册表上运行;但通过使用重定向选项,可以在本地 Git 注册表上使用该命令。

--all 选项可让 vcpkg 扫描 ports 目录中所有可用的端口,并一次性更新全部端口。 最后,--verbose 选项会让该命令将其执行的每一项操作打印到标准输出,移除此选项可以抑制输出。

x-add-version 要求对注册表的 Git 存储库进行所有端口更改。 若要了解详细信息,请参阅[x-add-version 命令]文档。

当所有输出看上去都正确时,请运行:

git add .
git commit -m "Update versions database"

如果有远程 Git 存储库,请不要忘记推送更改:

git push

后续步骤

大功告成! 这样就已设置好自己的专用基于 Git 的注册表,可以与 vcpkg 一起使用了。

以下是接下来要尝试的一些其他任务: