教程:使用 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 - 创建 ports
和 versions
文件夹:
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 一起使用了。
以下是接下来要尝试的一些其他任务: