本文结合其它关于静态编译博客的总结及Qt5.11.2使用经验,将讲述Qt5.11.2与Qt5.8.0静态编译的部分区别,以及如何运用Qt5.11.2在Windows系统中,制作出一键静态编译的Qt应用程序,使程序实现不依赖于系统Qt库运行。
环境
系统:Windows 10 64位 家庭中文版
Qt版本:Qt 5.11.2 for Windows 32bit
Python版本:Python 3.6.4
1. 安装
-
1.1 安装Qt
- 下载地址: http://download.qt.io/archive/qt/5.11/5.11.2/
- qt-opensource-windows-x86-5.11.2.exe
-
注:安装时勾选Strawberry Perl可以跳过安装 Perl。
1.2 安装Perl
- 安装Perl, 下载地址: https://www.activestate.com/activeperl/downloads 1.3 安装Python
- 下载地址: https://www.python.org/downloads/
- Windows x86 executable installer
- 配置环境变量(根据自己Python安装路径修改),手动添加:
-
D:\Python36
D:\Python36\Scripts\
2. 检查
-
2.1打开Qt 5.11.2 for Desktop (MinGW 5.3.0 32 bit)
-
Win 10 搜索MinGW:
2.2 输入以下命令检查gcc编译器配置
-
gcc -v
2.3 输入以下命令检查perl解释器配置
-
perl -v
2.4 输入以下命令检查python配置
-
python
-
按Ctrl + Z,Enter ,退出python
3. 静态编译qmake
-
3.1 静态编译配置
-
在路径D:\Qt\Qt5.11.2\5.11.2下,新建文件夹mingw53_32_static:
-
在Qt 5.11.2 for Desktop (MinGW 5.3.0 32 bit)切换到Qt的 源码目录:
-
cd D:\Qt\Qt5.11.2\5.11.2\Src
-
运行命令(引号内修改为自己的安装目录):
-
configure.bat -confirm-license -opensource -platform win32-g++ -mp -debug-and-release -static -prefix “D:\Qt\Qt5.11.2\5.11.2\mingw53_32_static” -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebengine -skip qtwebview -skip qt3d
-
注:这里配置的时候,跳过了qtwebengine、qtwebview、qt3d,如果需要这些模块可以去掉skip。
-
*关于configure.bat:configure.bat介绍及参数用法
3.2 编译(大概需要6小时左右)
-
mingw32-make -j2
-
注:本处为2个线程编译,电脑好的可以开更多的线程,编译速度也更快。
3.3 安装(需要30分钟左右)
-
mingw32-make install
3.4 新增静态编译
-
5.8.0版本: 打开Qt Creator -> 工具 -> 选项 -> 构建和运行 -> Qt Versions
-
5.11.2版本: 打开Qt Creator -> 工具 -> 选项 -> 构建和运行 -> Kits
-
添加版本后,点击应用:
-
构建套件:选择刚才添加的版本,修改选项,点击应用(注意Qt版本一定要记得选对):
3.5 配置编译器
-
5.8.0版本:
-
记事本打开D:\ProgramFiles\Qt\Qt580\5.8\mingw53_32_static\mkspecs\win32-g++\qmake.conf,
-
添加 一行QMAKE_LFLAGS = -static,修改 QMAKE_LFLAGS_DLL其值为-static。
-
5.11.2版本:
-
(1)D:\Qt\Qt5.11.2\5.11.2\mingw53_32_static\mkspecs\common\gcc-base.conf,
-
QMAKE_LFLAGS 由空白改为 -static;
-
(2)D:\Qt\Qt5.11.2\5.11.2\mingw53_32_static\mkspecs\common\g+±win32.conf,
-
QMAKE_LFLAGS_DLL 由 -shared 改为 -static。
4. 生成exe文件
-
新建工程并编译
-
打开Qt,新建工程,选择静态编译套件,
-
左下角选择release模式,Ctrl + B编译,编译出来就可以直接运行exe程序了,
-
或者在已有项目中添加构建,左下角选择 Qt5.11.2 MinGW static -> Release,重新编译:
-
exe程序在工程文件同级的 build-项目名称-Qt_5_11_2_MinGW_static-Release\release 文件夹下。
-
注:如果选择debug,编译没问题,但是编译出来的exe占用空间较大。