Qt源码静态编译32位版本(基于MSVC2015)

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:Python27Scripts

C:Strawberrycin

C:Strawberryperlsitein

C:Strawberryperlin

D:Ruby27-x64in

没有可以手动添加。

3 配置编译选项

假设Qt源码的目录是在D:QtQt5.12.85.12.8Src,首先把qtbasesrc3rdpartyangleinclude下面的头文件,一股脑儿拷贝到qtbaseinclude,避免后面编译找不到OpenGL的头文件。

既然编译32位版本,那么就切换到对应的编译环境,在开始菜单找到下面入口:

打开命令行以后,MSVC x86的编译环境已经帮你配好了,这时候切换到源码所在目录,例如,然后运行如下命令:

configure -confirm-license -opensource -static -debug-and-release -platform win32-msvc -prefix "D:Qt5.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库了。

经验分享 程序员 微信小程序 职场和发展