1 背景
Qt的程序发布经常带着一坨运行环境,很不简洁,体积也大,而且有些场景下,不得不使用一些第三方提供的32位库,官方现在又只提供64位了,看来只能自己动手了。为什么要基于MSVC,主要还是为了兼容。
2 准备工作
首先要有以下这些东西(基于个人需求,其他场景下区别不大):
编译环境:
Windows 10 LTSC 2019
Visual Studio 2015
源码:
qt-everywhere-src-5.12.8
第三方工具:
Python v2.7.18
Perl v5.22.1
Ruby v2.7.2
注:源码和Perl可以直接下载Qt安装包qt-opensource-windows-x86-5.12.8,安装时勾选Source和Strawberry Perl,这样也比较方便。
安装过程中如果有的话,记得勾选添加环境变量的选项。
安装完之后记得检查系统环境变量,缺的要补上,主要目的是为了能够让编译脚本直接访问第三方工具。
系统变量PATH下面应该有:
D:\Python27\
D:\Python27\Scripts
C:\Strawberry\c\bin
C:\Strawberry\perl\site\bin
C:\Strawberry\perl\bin
D:\Ruby27-x64\bin
没有可以手动添加。
3 配置编译选项
假设Qt源码的目录是在D:\Qt\Qt5.12.8\5.12.8\Src,首先把qtbase\src\3rdparty\angle\include下面的头文件,一股脑儿拷贝到qtbase\include,避免后面编译找不到OpenGL的头文件。
既然编译32位版本,那么就切换到对应的编译环境,在开始菜单找到下面入口:
打开命令行以后,MSVC x86的编译环境已经帮你配好了,这时候切换到源码所在目录,例如,然后运行如下命令:
configure -confirm-license -opensource -static -debug-and-release -platform win32-msvc -prefix "D:\Qt\5.12.8-static-vs2015" -mp -sql-odbc -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz -opengl dynamic -qml-debug -nomake tests -no-compile-examples -nomake examples
简单讲几个重要的:
-static 编译静态库
-debug-and-release 同时编译debug和release版本
-prefix 指定安装目录
-mp 多核编译
-opengl dynamic 编译OpenGL,动态加载,默认开启ANGLE
-qml-debug 开启QML调试支持
其他顾名思义,如果想要了解更多编译参数的细节,可以configure -h查看一下都有哪些编译开关,对照官方文档研究一下。
4 nmake编译
Qt官方有Jom工具进行构建,但是nmake已经足够我们用了,也不用再装环境了。
我们接着第3部分,命令行不用退出,直接nmake,经过漫长的等待,编译结束后,运行nmake install,就会在指定的安装目录看到最终编译好的32位Qt库了。