本教程将指导您更新现有 vcpkg 依赖项的版本。 建议先阅读发布资料库教程,然后再继续操作。
在本教程中,学习:
先决条件
1 - 创建覆盖端口
第一步是创建要修改的包的覆盖端口 。
创建用于保存覆盖端口的目录
可以在所选的任何文件系统位置创建覆盖端口目录。 在本教程的任何步骤中,将 $OVERLAY_LOCATION
替换为所选位置。
mkdir "$OVERLAY_LOCATION"
mkdir "$OVERLAY_LOCATION"
将端口的内容复制到覆盖端口目录中
在本教程中,您将在发布包教程中将 vcpkg-sample-library
端口更新为具有动态资料库支持的版本。
Copy-Item -Path <path/to/vcpkg-sample-library> -Destination "$OVERLAY_LOCATION" -Recurse
xcopy <path/to/vcpkg-sample-library> "$OVERLAY_LOCATION" /E
cp -R <path/to/vcpkg-sample-library> "$OVERLAY_LOCATION"
2 - 修改端口的版本
将 vcpkg.json
中的版本更改为 1.0.1
。
vcpkg.json
{
"name": "vcpkg-sample-library",
"version": "1.0.1",
"description": "A sample C++ library designed to serve as a foundational example for a tutorial on packaging libraries with vcpkg.",
"homepage": "https://github.com/MicrosoftDocs/vcpkg-docs/tree/cmake-sample-lib",
"license": "MIT",
"dependencies": [
"fmt",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}
3 - 修改 portfile.cmake
更新源参考
通常使用 vcpkg_from_...
维护器函数提取源。
所需源版本由 REF
或 URLS
等选项标识。
如果未使用 ${VERSION}
(即清单中的值)派生选项值,请使用实际的 git 标记、git commit 或下载 URL 更新选项值。
获取包 SHA512
运行 vcpkg install --overlay-ports=$OVERLAY_LOCATION vcpkg-sample-library
,您将收到有关包 SHA512 的错误。 复制 portfile 中实际哈希的值。
示例输出:
Downloading https://github.com/MicrosoftDocs/vcpkg-docs/archive/1.0.1.tar.gz -> MicrosoftDocs-vcpkg-docs-1.0.1.tar.gz
Successfully downloaded MicrosoftDocs-vcpkg-docs-1.0.1.tar.gz
error: failing download because the expected SHA512 was all zeros, please change the expected SHA512 to: fc55ce73b9175bdfedd73d9df1e7ed744de7ee3fd4aa51cafce65ee7bd49e56dc68301843c31d2ba017fd362663c25f53bbf56cfd35dbac09520e39b86bc25b8
修改 portfile.cmake
使用正确的值更新包的 SHA512,并确保删除 ONLY_STATIC_LIBRARY
限制,因为新版本的 vcpkg-sample-library
添加了将其生成为动态库的支持。
您的 portfile.cmake
文件应与以下内容类似:
portfile.cmake
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO MicrosoftDocs/vcpkg-docs
REF 1.0.1
SHA512 fc55ce73b9175bdfedd73d9df1e7ed744de7ee3fd4aa51cafce65ee7bd49e56dc68301843c31d2ba017fd362663c25f53bbf56cfd35dbac09520e39b86bc25b8
HEAD_REF cmake-sample-lib
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(PACKAGE_NAME "my_sample_lib")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
4 - 安装覆盖端口
若要验证端口是否工作,请运行以下命令:
vcpkg install "--overlay-ports=$OVERLAY_LOCATION" vcpkg-sample-library
5 - 更新内置的注册表端口
将端口的内容替换为
将 ports
目录中的 vcpkg-sample-library
内容替换为更新后的文件。 然后,通过在 azurekg 存储库的本地克隆中运行以下命令,提交更改:
git checkout -b vcpkg-sample-library-1.0.1
git add ports/vcpkg-sample-library
更新版本数据库
运行 [vcpkg x-add-version
] 命令以更新版本数据库文件。
vcpkg x-add-version vcpkg-sample-library
将更改推送到分支
运行以下命令,以更新版本数据库并将更改推送到 https://github.com/Microsoft/vcpkg 的分支。
git add versions/.
git commit -m "Update vcpkg-sample-library to version 1.0.1"
git push --set-upstream <fork remote> vcpkg-sample-library-1.0.1
6 - 打开拉取请求
- 导航到 GitHub 上的已创建分支的存储库。
- 单击“比较 & 拉取请求”按钮。
- 验证所做的更改
- 添加描述性标题和注释
- 填写 PR 审阅清单
- 单击“创建拉取请求”。
就这么简单! 已成功更新 vcpkg 特选注册表中的端口。
另请参阅
有关详细信息,请参阅: