我通过 vcpkg 安装了 protobuf vcpkg install protobuf:x64-windows
。显然它安装了最新版本(3.6.1)。对于我需要版本<=3.5.1的项目。有没有办法使用 vcpkg 安装它?现在我刚刚使用 cmake 构建了 3.5.1,但是项目正在使用 vcpkg 的路径寻找 protobuf,我真的不知道是否允许我更改代码。
2 回答
要在其中包含特定版本的包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
包版本管理的问题在repo上非常活跃。检查问题 #3592
使用新功能(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
通常,我只是从最初开发项目的提交中复制数据包规范。希望这可以帮助!