我通过vcpkg vcpkg install protobuf:x64-windows
安装了protobuf。显然,它安装了最新版本(3.6.1)。对于项目,我需要版本<= 3.5.1。有什么方法可以使用vcpkg安装它吗?现在,我只是使用cmake构建了3.5.1,但是使用vcpkg的路径在项目中寻找protobuf,我真的不知道是否允许更改代码。
答案 0 :(得分:0)
要在vcpkg
中使用特定版本的软件包,您需要在适当的时间点在vcpk
repo中检出。
转到已安装git的vcpk
文件夹。
标识与您要查找的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)
。
(如果历史记录已被重写,则提交哈希/消息可能已更改。)
签出感兴趣的提交:
git checkout b1fea4588
运行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
通常,我只是从最初为项目开发的提交中复制数据包规范。希望这会有所帮助!