Qt5.6.3静态编译+vs2015环境下使用Qt静态库

       Qt官网下载都是动态库,生成exe后如果需要发布或者发送给别人使用,需要一堆的dll文件,刚好最近工作上没什么事情可以做,来研究了一下编译Qt静态库并用vs2015使用,期间参照了许多博客和官方文档,走了不少弯路,最后终于成功,想要分享一下,下次自己忘记时也可以在翻看。

一、编译Qt静态库

       第一步:下载Qt源码(http://download.qt.io/official_releases/qt/5.6/5.6.3/)

选择qt-opensource-windows-x86-msvc2015-5.6.3.exe下载,网上很多博客是下载qt-everywhere-opensource-src-5.6.3.zip解压然后编译,但我下的这个版本解压后编译有错误(不知道是QT本身的纰漏,还是我哪里的配置导致的,这边做个记录),其他版本的就不清楚了。下载qt-opensource-windows-x86-msvc2015-5.6.3.exe这个比较麻烦,因为需要安装,安装的时候

记得勾选安装源码,最主要的就是这个了,如下图红色标记:

Qt5.6.3静态编译+vs2015环境下使用Qt静态库_第1张图片

不管是解压源码,还是安装后的源码,在解压后的文件或安装后的文件里的5.6.3文件下都有一个src的文件夹,里面放的就都是源码。

第二步:修改编译文件

Qt5.6.3静态编译+vs2015环境下使用Qt静态库_第2张图片

寻找以上截图选中的文件msvc-desktop.conf文件,打开。

找到以下文本将以下的“D” 换成“T” 如:

QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

改成:

QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTd

第三步:安装python(百度随便找都有,若已有安装的就直接下一步)

第四步:在开始菜单中找到 "vs2015 开发人员命令提示" ,并打开,如下图所示

Qt5.6.3静态编译+vs2015环境下使用Qt静态库_第3张图片

然后检验一下python是否可用,直接输入命令 python,效果如以下,则可使用,然后“Ctrl +Z “ ,“回车”,退出刚刚进入的python

Qt5.6.3静态编译+vs2015环境下使用Qt静态库_第4张图片

若输入python命令后,不是以上效果的,则应该将python的安装目录配置到你电脑的环境。

有两种方法:1、在系统的属性中找到环境变量,输入python的安装目录。但是这里修改的环境变量,需要重启电脑才会生效,                            可选择第二种方法;

                        2、输入命令 :set   path=%path%;C:\Users\linmaohui\AppData\Local\Programs\Python\Python36-32  (红色加粗部分为python的安装目录)

再次输入命令python后应该就可以了;

第五步:进入你的qt源码目录。如下图

Qt5.6.3静态编译+vs2015环境下使用Qt静态库_第5张图片

然后输入以下命令(其中红色加粗的部分为最后qt静态库存放的路径)

configure -confirm-license -opensource -platform win32-msvc2015 -debug-and-release -static -prefix "D:\Qt\5.6.3-static-vs2015" -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip

这里要注意红色部分的双引号一定要是英文字符,我在网上寻找命令时,偷懒直接复制,结果是中文字符的双引号,导致第一次编译失败。

第六步:若第五步成功后,输入命令nmake,进行编译,这个过程需要3~4个小时。

第七步:第六步成功后,输入命令nmake  install  ,也需要等待一会,命令执行完后,在第五步红色部分的路径下则已经生成Qt静态库。这里说明一下,编译过后的静态库为32位,要编译64位的估计要再修改第五步的命令,这个暂未研究,研究过后将再更新博客。

二、在vs2015中使用静态库

       一开始以为qt静态库的调用,和调用动态库的一样,结果同样的程序就是编译不过。接下去我再把自己使用的步骤说明一下。

第一步:添加包含文件,库的路径,以及所需用到的库名。(这里就不细说了,基础的操作)

   这里要注意:qt动态库的使用只需要包含D:\Qt2\5.6.3-static-vs2015\lib(该路径为我安装qt静态库的路径)底下的库文件即可使用,但是qt静态库的使用需要在多包含一个文件夹下的lib文件:D:\Qt\5.6.3-static-vs2015\plugins\platforms(该路径为我安装qt静态库的路径)里面的lib文件都需要包含一下。

第二步:第一步完成后,建立项目编译就能编译了,不然会有一堆无法解析外部符号的问题。但是问题并不是马上就没有了。。

编译是能过,但是运行一个简单的QWidget会崩溃掉。需要在main.cpp中添加以下内容:

#include
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)

问题解决!

 

现在就可以正常的编写Qt程序了

你可能感兴趣的:(Qt5.6.3静态编译+vs2015环境下使用Qt静态库)