5

我通过 vcpkg 安装了 protobuf vcpkg install protobuf:x64-windows。显然它安装了最新版本(3.6.1)。对于我需要版本<=3.5.1的项目。有没有办法使用 vcpkg 安装它?现在我刚刚使用 cmake 构建了 3.5.1,但是项目正在使用 vcpkg 的路径寻找 protobuf,我真的不知道是否允许我更改代码。

4

2 回答 2

3

要在其中包含特定版本的包vcpkg,您需要在vcpkrepo中的适当时间点签出。

  1. 转到您的 git 安装vcpk文件夹。

  2. 确定与protobuf您要查找的版本匹配的提交。

以下行对提交历史进行颜色编码,以使其更具可读性,并通过管道grep识别protobuf相关的提交。

git log --color=always --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad)' --date=short | grep --color=never protobuf

你会发现像b1fea4588 - [protobuf] update to 3.5.1 (2018-01-31). (如果历史被重写,提交哈希/消息可能已经改变。)

  1. 检查感兴趣的提交: git checkout b1fea4588

  2. vcpkg install protobuf

vcpkg包版本管理的问题在repo上非常活跃。检查问题 #3592

于 2020-12-02T14:42:18.693 回答
-1

使用新功能(2019 年 6 月):端口覆盖 https://github.com/microsoft/vcpkg/blob/master/docs/specifications/ports-overlay.md

这是一个例子。数据包的版本在文件中硬编码:

<VCPKG_ROOT>/ports/<packet_name>/CONTROL

因此它绑定到 vckpg 的提交。但是您可以使用以下命令覆盖数据包版本

vcpkg --overlay-ports="/some/path/to/the_versions" install protobuf:x64-windows

该目录应包含数据包规格:

/some/path/to/the_versions/protobuf/CONTROL
/some/path/to/the_versions/<packet_2_name>/CONTROL
/some/path/to/the_versions/<packet_3_name>/CONTROL

通常,我只是从最初开发项目的提交中复制数据包规范。希望这可以帮助!

于 2020-02-06T14:18:05.557 回答