本文总结在window7 64位版本下静态编译Qt5.7.0的过程
windows系统环境:window7企业版64位
QT版本:5.7.0 Windows-32bit版本
1、下载qt
https://www.qt.io/download-open-source/#section-2,目前下载最新版本需要注册了
选择“·Qt 5.7.0
for Windows 32-bit (VS 2013, 909 MB) (info)2、安装QT
选择安装位置,下一步
选择需要安装的组件,按上图勾选,下一步,直到安装完成
3、安装Perl
我安装的是:ActivePerl-5.24.0.2400-MSWin32-x86-64int-300560.exe
下载:http://www.activestate.com/activeperl/downloads安装路径:C:\Perl
安装过程中勾选“添加到环境变量”
4、安装python我安装的是:python-3.5.2.exe安装路径:C:\Python35-32
安装过程中勾选“添加到环境变量”
5、配置环境变量将“D:\Qt\Qt5.7.0\5.7\mingw53_32\bin”添加到系统环境变量path中Perl和python安装过程中选择“添加到环境变量”选项后,不再需要手动添加环境变量到path中
6、编译QT
在开始菜单找到“Qt 5.7 for Desktop (MinGW 5.3.0 32 bit)”,并打开终端7、检查配置
在“Qt 5.7 for Desktop (MinGW 5.3.0 32 bit)”终端中输入下面的命令检测Qt安装环境输入以下命令看看gcc编译器是否配置正确gcc –v再输入以下命令看看perl解释器是否配置正确perl –v输入以下命令看看python是否配置正确python按Ctrl + Z回车,可以退出python运行python是报错:解决方法:安装的是,这个版本需要的vc版本是2015的了,下载安装Microsoft
Visual C++ 2015
8、配置编辑D:\Qt\Qt5.7.0\5.7\Src\qtbase\mkspecs\win32-g++\qmake.conf找到QMAKE_LFLAGS和QMAKE_LFLAGS_DLL,后面赋值为-staticQMAKE_LFLAGS = -staticQMAKE_LFLAGS_DLL = -static保存,退出(如果不做这个修改,生成的执行文件要依赖libgcc_s_dw2-1.dll,libstdc++-6.dll,libwinpthread-1.dll)进入qt源码目录:cd D:\qt\qt5.7.0\5.7\src配置命令:configure.bat -confirm-license -opensource -platform
win32-g++ -mp -debug-and-release -static -prefix
"D:\Qt\5.7.0_mingw_static" -qt-sql-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 qt3d9、编译
mingw32-make -j2注:本处为2个线程编译,电脑好的可以开更多的线程,编译速度也更快10、安装mingw32-make
install
安装完成后,可以将Qt源码目录删除,释放磁盘空间11、配置Qt Creator
打开Qt Creator,菜单栏选择“工具->选项->构件和运行-> Qt Versions”,点击右边“添加”按钮,找到静态编译后的qmake.exe,
我的路劲如下:D:\Qt\5.7.0_mingw_static\bin\qmake.exe
设置完成后,点击"Apply"
菜单栏选择“Qt Creator ->工具->选项->构件和运行->编译器”
菜单栏选择“Qt Creator ->工具->选项->构件和运行->构建条件(Kit)”点击右边“添加”按钮
点击Apply,应用设置
12、配置编译器用记事本打开D:\Qt\5.7.0_mingw_static\mkspecs\win32-g++\qmake.conf文件找到QMAKE_LFLAGS和QMAKE_LFLAGS_DLL将后面都改成 -static
13、使用
打开Qt,新建工程,选择静态编译的套件
左下角选择release模式
静态编译,如果选择debug,可以编译成功,但是编译出来的exe非常大,几百mb
Ctrl+B编译,编译完成后,静态编译版本的exe就完成