vcpkg安装旧版本C++库

6.17 更新

下面的办法还是不优雅,因为checkout vcpkg不一定能checkout到你想要的安装的库版本,而且这样checkout很麻烦。
当前我使用的最好的办法是直接去修改对应库的vcpkg.json中的版本号,然后下载库,会提示哈希值不匹配,再把实际哈希值修改到vcpkg.json中,重新下载库,就OK了

背景

在windows上编译openvpn3时,使用vcpkg来管理openssl库,openvpn3依赖的是openssl1.x版本,但是vcpkg下载的openssl库是3.1.1版本,导致编译报错,于是寻找vcpkg指定下载库版本的方法,顺带找到了一个写的还不错的vcpkg使用教程,C++开源库 - 包管理工具Vcpkg安装使用教程,还有一个网友提出了手动下载库,修改vcpkg.json的办法,vcpkg安装指定版本的库
,但是感觉比较麻烦。
参考 # Install older version of protobuf via vcpkg
找到的方法,方法比较老,并且感觉不太优雅,总归还是能用。

要在vcpkg中使用特定版本的软件包,你需要在vcpkg存储库中适当的时间点进行检出。

  • 转到已安装git的vcpk文件夹。
  • 识别与你正在寻找的openssl版本相匹配的提交。
    下面的一行将提交历史着色以使其更易读,并将其与grep连接在一起以识别与protobuf相关的提交。
git log --color=always --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad)' --date=short | grep --color=never openssl

你会找到像
a69b65229 - (HEAD) [openssl] update to 1.1.1n (#23589) (2022-03-17)
这样的行。(如果历史记录已被重写,则提交哈希/消息可能已更改。)
检出感兴趣的提交:

git checkout b1fea4588

运行

vcpkg install openssl

软件包版本管理问题在vcpkg存储库中非常活跃。请查看Issue#3592。

你可能感兴趣的:(vcpkg安装旧版本C++库)