Vcpkg安装库是报zlib安装失败的解决办法

Vcpkg安装库是报zlib安装失败的解决办法

现象:

使用vcpkg安装需要依赖zlib的库时,会先安装zlib,此时会报错:

Error: Building package zlib:x86-windows-static failed with: BUILD_FAILED

输出日志中有大量cmake相关错误。

原因:

安装vs2017时过度洁癖,自以为不需要的到东西都没有装。
这里用cmake生成ninja的make文件,而ninja再去调用对应平台(x86/x64)的cl.exe来编译cpp文件。
而不是通常在win下编译使用的命令行工具:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat

虽然我们能在rules.ninja中定义的位置找到相关的cl.exe。但是当前这个cl实际是无法直接用的。
比如:

C:\PROGRA~2\MIB055~1\2017\ENTERP~1\VC\Tools\MSVC\1411~1.255\bin\HostX64\x86\cl.exe

我们直接执行一个cpp的编译:

C:\PROGRA~2\MIB055~1\2017\ENTERP~1\VC\Tools\MSVC\1411~1.255\bin\HostX86\x86\cl.exe   -DNO_FSEEKO -DZLIB_DLL -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -ID:\Vcpkg\vcpkg\buildtrees\zlib\src\zlib-1.2.11 -I. /DWIN32 /D_WINDOWS /W3 /utf-8 /MP /D_DEBUG /MDd /Z7 /Ob0 /Od /RTC1 /showIncludes /FoCMakeFiles\zlib.dir\adler32.obj /FdCMakeFiles\zlib.dir\ /FS -c D:\Vcpkg\vcpkg\buildtrees\zlib\src\zlib-1.2.11\adler32.c

此时会直接报错找不到mspdb140.dll。而使用everything搜索整个电脑,这东西从来没有过。

所以结论就是,我们精简安装(仅安装了windows平台c++开发相关工具)的vs2017的编译器是不完整的,至少对于cmake-->ninja-->cl.exe 这种情况是无法使用的。

所以我们要做的需要让其支持上述工具链的编译。

元芳!怎么办?

答案很简单:

  • 1、开始菜打开“Visual Studio Installer“`
  • 2、点击“修改”
  • 3、在“单个组件”中找到“用于CMake和Linux的VisualC++工具”勾选之
  • 4、修改安装,静候佳音。

此时再用everything搜搜mspdb140.dll系统中已经有这东西了。
再试试vcpkg install zlib
你会看到

The package zlib is compatible with built-in CMake targets

大功告成。


BTW

CMake我现在的当前最新版(3.10.0_x64)
附上我的vs2017安装的组件。
这里写图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值