教程:更新现有 vcpkg 依赖项

本教程将指导您更新现有 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_... 维护器函数提取源。 所需源版本由 REFURLS 等选项标识。 如果未使用 ${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 - 打开拉取请求

  1. 导航到 GitHub 上的已创建分支的存储库。
  2. 单击“比较 & 拉取请求”按钮。
    1. 验证所做的更改
    2. 添加描述性标题和注释
    3. 填写 PR 审阅清单
  3. 单击“创建拉取请求”。

就这么简单! 已成功更新 vcpkg 特选注册表中的端口。

另请参阅

有关详细信息,请参阅: