VS源码编译QuaZip(Windows下)

最近写个Qt demo,想要使用压缩和解压多个文件的功能,并不使用额外进程。网上参考了很多资料,发现只有QuaZip比较适合我的需求。但是QuaZip只提供源码,因此需要自己来编译。

尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布Visual Studio 2015 Add-in for QT5.5.1的。而且官方也没有明确的文档指导在visualstudio 2015环境下开发QT5应用的开发人员编译和配置相应的环境。

VS2013 编译XPdf

XPdf中使用到的第三方库主要有freetype, libpng, zlib三种,不同版本的XPdf Release时所依赖的版本也各不相同。因此编译前,首先要确认所依赖库的具体版本,以尽量避免编译过程中可能出现的错误。

本篇中使用VS2013进行编译,请在开始下一步骤前自行确认VS2013环境是否存在

QuaZip简介

QuaZIP is a simple C wrapper over Gilles Vollant's ZIP/UNZIP package that can be used to access ZIP archives. It uses the Qt toolkit.

简单来说,QuaZip就是zlib(解压缩软件)的Qt封装类,在Qt开发环境中非常好用。

今天我就把自己摸索出来的方法分享出来,希望对大家有所启发。

1.下载相关源码压缩包

以最新版XPdf(v3.04)为例,下载源码)后解压,其中ms_make.bat文件中有如下字段:

图片 1

因此,需下载对应第三方库版本分别为:

  • freetype-2.5.3
  • libpng-1.5.12
  • zlib-1.2.7

下载完成后分别解压并拷贝至xpdf根目录下,最终目录结构如图所示:

图片 2

编译步骤

  1. 在VS中下载Qt插件(全名Qt Visual Studio Tools)并安装,安装后配置下插件使用的Qt版本。
  2. 在sourceforge官网下载QuaZip源码,并解压缩。
  3. 用插件打开QuaZip解压缩目录下quazip子目录中的quazip.pro工程文件(VS会提示重新生成配置文件,选择“是”)。
  4. 下载zlib的源代码,并解压缩。
  5. 在VS项目属性中添加解压后的zlib源文件,具体请百度。
  6. 重点来了,用VS打开zconf.h文件,并将:

    #if 1           /* HAVE_UNISTD_H -- this line is updated by ./configure */
    #  include <sys/types.h> /* for off_t */
    #  include <unistd.h>    /* for SEEK_* and off_t */
    #  ifdef VMS
    #    include <unixio.h>   /* for off_t */
    #  endif
    #  define z_off_t off_t
    #endif
    

    这几行替换为以下代码:

    #ifdef HAVE_UNISTD_H
    #include <sys types.h=""> / for off_t /
    #include <unistd.h> / for SEEK_ and off_t */
    #define z_off_t off_t
    #endif
    

    这是因为windows下没有unistd.h这个文件,这是类unix系统才有的。

  7. 顺利编译通过,生成动态链接库。

1.        首先,我们到网站下载源码包,加压源码包到磁盘。

2. freetype build

打开VS文件 “.xpdf-3.04freetype-2.5.3buildswindowsvc2010freetype.sln”,升级对话框中选择确认,编译“Release Multithreaded”版本。

将生成的freetype253MT.lib文件拷贝至路径“.xpdf-3.04freetype-2.5.3”中,并重命名为freetype2.lib

感想

  1. 很多开源软件对windows系统的支持不是很好,就像QuaZip,如果你用zlib源码一起编译,那会更蛋疼。
  2. 开软软件的维护更新是一大重要问题,上面那个bug实际上已经存在9年了,一直没有得到修改。

2.        由于编译QtWekbit需要ICU andANGLE 库,ICU库需要单独下载和编译,从下载ICU4Cversion 56.1并解压到磁盘,目录位置参见随后说明。

3. libpng build

打开文件".xpdf-3.04libpng-1.5.12projectsvstudioreadme.txt",其中提到编译前需设置好zlib.props

图片 3

打开该文件,修改<ZLibSrcDir>字段如下:

<ZLibSrcDir>........zlib-1.2.7</ZLibSrcDir>

此处修改为1.2.7版本为便于与XPdf直接依赖的第三方库zlib版本共享而选择一致,也可单独设立合适版本

修改完成后,运行同一目录下VS项目文件,同样升级后编译“Release Library” 版本libpng。编译成功后,做如下动作:

  • 拷贝生成的libpng15.lib至路径“.xpdf-3.04libpng-1.5.12”,并重命名为libpng.lib
  • 拷贝生成的zlib.lib至路径“.xpdf-3.04zlib-1.2.7”中

3.        在Qt 5.5.1的源码包中还存在一个BUG,如果直接编译的话在编译QT3D模块的时候会报没有找到Zlib.h的错误而中断编译,所以参照如下提示修改qt-everywhere-opensource-src-5.5.1qt3dsrc3rdpartyassimp目录下的assimp.pri文件。可参考地址。

4. xpdf build

如需编译生成pdftopng/pdftohtml可执行文件,需先修改ms_build.bat文件内容。修改后文件如下:

图片 4

xpdf编译需要VS环境,编译具体步骤如下:

  • 运行VS安装路径下的快捷方式(如“C:Program Files (x86)Microsoft Visual Studio 12.0Common7ToolsShortcuts”),本次运行“VS2013 x86 本机工具命令提示”
![](https://upload-images.jianshu.io/upload_images/2686562-97c04ba2a135cf63.png)
  • 切换路径至“.xpdf-3.04”,运行ms_build.bat进行编译
  • 如编译成功,将产生如下可执行文件
![](https://upload-images.jianshu.io/upload_images/2686562-8df4afd1dc36e494.png)

图片 5

4.        在编译QT5.5.1之前还需要安装配置一下的工具和环境:

l  ActivePython 2.7 or later

l   style="text-decoration: underline;">Perl

l   style="text-decoration: underline;">Ruby

l   style="text-decoration: underline;">cygwin

我安装使用的是Python 3.5, strawberry-perl-5.22.0.1-64bit.msi (64 bit) , rubyinstaller-2.2.3-x64.exe(x64)和cygwin64,其中cygwin安装配置选择以下的内容:

本文由糖果派对电玩城发布于用户反馈,转载请注明出处:VS源码编译QuaZip(Windows下)

您可能还会对下面的文章感兴趣: