通过vcpkg安装旧版本的protobuf

时间:2018-12-16 19:51:38

标签: protobuf-c vcpkg

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

2 个答案:

答案 0 :(得分:0)

要在vcpkg中使用特定版本的软件包,您需要在适当的时间点在vcpk repo中检出。

  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回购中,软件包版本管理的问题非常普遍。选中Issue #3592

答案 1 :(得分:-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

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