在Windows平台下,采用cl编译器的编译效率明显要高于Mingw,因其能利用处理器的多核优势并进行多文件同时编译,加上 QMAKE_CXXFLAGS += /MP 编译选项后,个人测试编译时间缩短一半左右。下面的例子不一定局限于MSVC 2013和Qt 5.4.2,只要是qt+msvc的开发形式都可以借鉴。
一、编译quazip库
① 安装Qt msvc2013版本
② 安装MSVC 2013
③ 在官网下载quazip的源码
④ 打开quazip源码文件夹下的 "quazip.pro" 工程文件
⑤ 切换到release状态,运行,此时会提示:
x:\Qt\Qt5.4.2_msvc2013\5.4\msvc2013_64_opengl\include\QtZlib
文件夹下的两个文件放到源代码的quazip和qztest文件夹下
⑥ 运行, xxx\quazip\release的 quazip.dll 和 quazip.lib 文件就是我们将要用到的库文件
注:debug版没有测试~~~
二、使用quazip库
① 打开自己的工程,将quazip源码中的头文件提取出来放到相应文件夹下,同时把库文件也放到相应文件夹下,在pro文件中添加如下内容(目录位置根据实际情况):
② 编译,此时会出现如下错误:
error: C2491: “QuaZipFile::staticMetaObject”: 不允许 dllimport 静态数据成员的定义,这里是 cl 编译器的特有问题,具体原因请百度一下吧,此处不解释了。
因此,根据说明,将自己的pro文件中加上这一行,DEFINES += QUAZIP_BUILD
再注:使用 windeployqt命令发布程序的时候,需将quazip.dll放在程序的目录下,虽然之前是Release编译了库,但是并不是静态的,如需静态的,请百度一下吧,我也没有测试过,记得看过资料说,简单的修改下源码就可以了,欢迎大家尝试。
一、编译quazip库
① 安装Qt msvc2013版本
② 安装MSVC 2013
③ 在官网下载quazip的源码
④ 打开quazip源码文件夹下的 "quazip.pro" 工程文件
⑤ 切换到release状态,运行,此时会提示:
-1: error: dependent '..\..\quazip-0.7.1\quazip\zlib.h' does not exist.
原因是找不到zlib.h,因此我这里将
x:\Qt\Qt5.4.2_msvc2013\5.4\msvc2013_64_opengl\include\QtZlib
文件夹下的两个文件放到源代码的quazip和qztest文件夹下
⑥ 运行, xxx\quazip\release的 quazip.dll 和 quazip.lib 文件就是我们将要用到的库文件
注:debug版没有测试~~~
二、使用quazip库
① 打开自己的工程,将quazip源码中的头文件提取出来放到相应文件夹下,同时把库文件也放到相应文件夹下,在pro文件中添加如下内容(目录位置根据实际情况):
INCLUDEPATH += $$PWD/libs/quazip/include/
DEPENDPATH += $$PWD/libs/quazip/include/
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/quazip/lib/ -lquazip
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/quazip/bin/ -lquazip
INCLUDEPATH += x:\Qt\Qt5.4.2_msvc2013\5.4\msvc2013_64_opengl\include\QtZlib\
② 编译,此时会出现如下错误:
error: C2491: “QuaZipFile::staticMetaObject”: 不允许 dllimport 静态数据成员的定义,这里是 cl 编译器的特有问题,具体原因请百度一下吧,此处不解释了。
③ 查看源代码中的 "quazip_global.h" 文件,里面有下面的描述:
/**
* When building a DLL with MSVC, QUAZIP_BUILD must be defined.
* qglobal.h takes care of defining Q_DECL_* correctly for msvc/gcc.
*/
因此,根据说明,将自己的pro文件中加上这一行,DEFINES += QUAZIP_BUILD
④ 彻底清除Qt编译产生的的build文件夹,需删掉build文件夹,因为此项修改需要改动Makefile,右键->清除并不能清除掉Makefile文件。
⑤ Run,然后尽情使用吧~
注:这里使用的是release编译方式,debug暂时还没有测试过。再注:使用 windeployqt命令发布程序的时候,需将quazip.dll放在程序的目录下,虽然之前是Release编译了库,但是并不是静态的,如需静态的,请百度一下吧,我也没有测试过,记得看过资料说,简单的修改下源码就可以了,欢迎大家尝试。