如何设置 vcpkg 依赖特定编译器

最近项目要部署到 gitlab-ci 上,所以远程机器上也要安装好编译环境

在相关的环境安装完后,发现编译项目时提示找不到三方库的符号文件

看到这个错误的第一反应就是依赖库的版本不对,因为远程机器上不仅安装了 vs2019,还安装了 vs2022

这个可能会导致 vcpkg 编译时选择了 vs2022 的 MSVC,但是我们在 cmake 时选择的是 vs2019

这样就导致了 jsoncpp 里的某个符号文件无法找到,因为高版本的库可能会把一些旧的函数删除了

借助这篇文章,

我们需要设置 vcpkg 强行选择特定的编译器

 

 

v142 是 vs2019,v143 是 vs2022
设置完之后,删除 vcpkg 的缓存文件夹(archives),卸载 jsoncpp 库并重新安装即可

 

补充:

如果我们的机器上同时存在 vs2019 和 vs2022,那在 cmake 时没有指定 vs2019 编译器,在编译时可能会提示找不到 v143 工具链,因为 vcpkg 会默认用最新的编译器

而 v143 是 vs2022 的工具链,所以我们只需要在 cmake 时指定 vs2019 即可

cmake .. -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Releas

  

 

 

 

posted @ 2023-12-18 11:20  strive-sun  阅读(103)  评论(0编辑  收藏  举报