解决warning: The vcpkg E:\vcpkg\vcpkg.exe is using detected vcpkg root E:\vcpkg and ignoring mismatche

当我手动安装vcpkg的时候爆出warning提示这个与环境变量中的VCPKG_ROOT的路径不匹配。

当然看起来只是warning也不一定会给项目造成什么问题。但是我还是不习惯于坐视不理。打开cmd,输入set命令,可以看到 

然而环境变量里并没有这个VCPKG_ROOT这个变量,我手动设置也没法覆盖掉,但是网上说这是临时的,只有在环境变量可以看到的才是永久的。那么我推测它是由某个程序搞出来的,当我在环境变量里设置VCPKG_ROOT的时候给我的值覆盖掉了。那么既然set打印的都是环境变量,我就把环境变量全删了不就好了?最起码会少一些吧,不会有我这么多看不懂的吧!所以我把环境变量删了很多很多。但是大家不要学我。后来我是用二分法找到的根源。二分法很好办就是把那些看起来可疑的环境变量改一下,后面加个1

 

然而搞笑的是最不可疑是windir只有当我把它变成windir1的时候才不会有VCPKG_ROOT这个环境变量的值。其它的可以改回来了。那么程序是怎么加载注册表,注册又是被什么程序加载的呢?

看我的上一篇可以知道。系统的程序会加载注册表,而vcpkg一眼看去就是微软开发的,所以微软有活可以加载到 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg这个文件夹(这里有vcpkg)。当我们在运行程序的时候(当成是set命令)可以把我们自己定义的VCPKG_ROOT覆盖掉,当是当前的环境。简单的说是有程序通过windir这个变量给VCPKG_ROOT赋值当我们在编译的时候。那么他一定是自己找到的 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg,如果找不到会不会自定义一个其它文件夹?比如我把vcpkg的文件名改为vcpkg1会不会把VCPKG_ROOT重新定义为C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg1?显然不会的,VCPKG_ROOT的定义一定是有判定条件的,这个条件一定与文件夹vcpkg的名称是vcpkg是与的关系,只有文件夹vcpkg的名称是vcpkg的时候VCPKG_ROOT才会被定义。否则我写什么都行了。所以把vcpkg的文件夹名改为vcpkg1那个程序就找不到了就不会给VCPKG_ROOT赋值了。再在安装目录运行vcpkg.exe list就不会有那warning了

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值