您好,欢迎访问沃航(武汉)科技有限公司官方网站
Qt5.6.3的windows版本最精简静态编译的方法
2021-04-23 01:22:50

        Qt是一个了不起的工程,在html5还没有出来前,一直一次开发,多平台运行的UI开发工具套件。只是由于html5的推出,大量使用场景被侵蚀了。

但由于html5是基于浏览器的开发语言与模型,注定无法开发需要控制硬件的程序。因此,Qt在一些特殊场景下还是有使用空间的。

        Qt是基于LGPL与商业授权双协议发布的,其中LGPL规定如果只是调用Qt的dll(linux下是so文件),其商用软件可以不开源,但是如果直接调用Qt的源码静态编译,其商业软件就必须一同开源。因此Qt默认不提供基于源码编译出来的静态库,如果想要生成完全的静态文件,需要自己编译静态库。

        其中Qt的5.6.3版本又是一个有着特殊意义的版本,他是官网承认的最后一版支持winxp的Qt版本,之后的版本都是从win7开始支持的。所以小沃就在此分享下Qt5.6.3在windows下编译静态库的方法。

1.下载

    Qt5.6.3的官方下载地址为:传送门

2.安装(以mingw为例,下载路径为qt-opensource-windows-x86-mingw492-5.6.3.exe,因为mingw免费,msvc收费,愿意为msvc付费的用户应该也不会用Qt吧)

    存在以下注意事项:

    (1)在第二步输入Qt账号密码时,如果不想登录,直接拔网线运行即可。

    (2)安装组件时下图的几个勾选的一定要勾上,否则以后开发会比较麻烦。

1.PNG

    (3)注意安装路径不要有中文

3.修改mingw的连接器配置项为静态编译

    也就是修改5.6.3\Src\qtbase\mkspecs\win32-g++\qmake.conf

    将QMAKE_LFLAGS=后添加-static作为编译参数

    将QMAKE_LFLAGS_DLL=-shared改为-static作为编译参数

4.安装编译需要的工具

    根据qt官方编译windows库需要条件(传送门),需要安装PythonActivePerl,安装完毕后,如果环境变量没有,请手动将这两个软件添加到环境变量中去。

    同时请将安装目录下的Tools\mingw492_32\bin添加到环境变量中去。

5.裁剪

    将5.6.3\Src中,除了文件夹qtbase的其他文件夹全部删掉(只删除文件夹)或是保留几个需要使用的,比如qtserialport,我们只编译核心功能。可以根据实际需求保留特定的文件夹。

6.运行configure

    小沃运行的是如下完整命令configure.bat -prefix G:\Qt\Qt5.6.3\5.6.3\staticlib -release -opensource -confirm-license -static -qt-zlib -qt-libpng -qt-libjpeg -qt-pcre -qt-freetype -no-qml-debug -no-openssl -no-opengl -nomake examples -nomake tests

    (1)需要根据自己Qt的实际安装路径修改G:\Qt\Qt5.6.3\5.6.3\staticlib

    (2)这个命令只添加了最基础的Qt支持,以下是可选修改

    -opengl desktop 替换-no-opengl让其支持opengl库

    -qt-zlib        压缩库,提高兼容性,可以去掉

    -qt-pcre        正则表达式,提高兼容性,可以去掉

    -qt-libpng      png格式图片,提高兼容性,可以去掉

    -qt-libjpeg     jpeg格式图片,提高兼容性,可以去掉

    -fontconfig     需要用到字体美化库时添加

7.编译

    mingw32-make -j 8

    8为cpu核心数,这个数字最好是与cpu核心数一致,可充分利用多核特性。

8.安装

    mingw32-make install

9.使用

    以后使用需要将G:\Qt\Qt5.6.3\5.6.3\staticlib\bin添加到环境变量中去,然后通过qtcreate开发完毕程序后,整个程序的工程通过命令行运行如下命令即可。

    qmake

    mingw32-make

    最后就会在工程文件下的release下看见编译出的东西了。

    注:网上有的说需要先运行qmake -project,这是为了生成qt工程文件。其实如果前期你是通过qtcreate开发的,那么qtcreate已经帮你把工程文件生成好了,这步是可以跳过的。


最后注意一点,本方法编译文件是依赖了Qt源代码的,所以通过本方法生成的文件是需要遵从LGPL协议而向使用者开放源代码的。


文章作者:沃航科技



联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn