1、下载源代码
zlib:https://github.com/madler/zlib
quazip: https://github.com/stachenov/quazip
虽然网上有很多zlib和quazip的编译说明,但大多是关于0.7版本的,如今quazip都已经是1.3版本的
本次编译就是基于1.3版本的编译.。
2、编译zlib
(1)、将CmakeList.txt拖到Cmake-gui中,并在
where to build
中加入build
表示cmake生成的文件路径
(2)、点击configure
会弹出选择编译器和位信息(默认64位),如果想改成32位则选择Optional platform
提示:如果选择了64位,则在编译quazip时也必须是64位
选完点击finish
(3)、点击Generate
(此处一般不会出现问题,下面红字是警告cmake的版本信息),点击Open Project
(4)、修改文件及编译
工程目录如下(zlib是动态库目录,zlibstatic是静态库目录,我们修改动态库的,zlibstatic不动)
找到zconf.h
头文件后找到如下代码
将此段代码删除extern
删除原因: zlib中定义并使用了ZEXTERN和ZEXPORT两种导出符,由宏来管理,但是quazip只选了ZEXPORT作为导出符,而单纯去掉其中一个会导致出现不符合语法的问题。
修改完后右键点击
INSTALL
,选择重新生成(注意切换到release版本)
生成后可以在install目录看到如下
将bin下的zlib.dll,lib下的zlib.lib以及include拷贝至自己所需的文件夹下
(我是创建了一个环境变量,这样程序在编译或是运行时都可以找到,我将所有的库头文件都放到此处)
3、编译quazip
(1)、使用CMake配置时需要先加入这两项,这两项表明zlib库的头文件及库的位置
当然你也可以修改CMakeList文件将OFF修改ON,表示使用qt的压缩库,虽然也能编译过去,但是你会发现在后面使用时会报错找不到zlib.h,这是因为quazip没有使用宏定义来控制zlib.h头文件的引入
(2)、点击configure,点击Generate(选编译器,修改生成目录等,此处不在赘述)
(3)、打开工程
在此工程中添加宏定义ZLIB_DLL(debug和release都要添加)
原因: zlib中使用ZLIB_DLL控制导入导出符,没有他无法使用导入符,后面会报链接错误
(所以说,linux环境是真干净,没有这么多麻烦事)
编译debug和release版本,QT在debug版本使用release库时会出现问题。