Qt 5.7.1/5.8.0/5.9.0 在 msvc2015/mingw32 方式下的静态编译过程
版权声明:本文为博主原创文章,未经博主允许不得转载。
注:Qt5.9.0的操作过程除configure参数之外与5.8.0基本一致(mingw版5.9.0的qmake.conf文件中QMAKE_LFLAGS = -static这一行需要手动添加)。
准备工作:
1. 在Qt官网下载Qt库的源码。
Qt 5.7.1: https://download.qt.io/archive/qt/5.7/5.7.1/single/
Qt 5.8.0: https://download.qt.io/archive/qt/5.8/5.8.0/single/
2. 下载并安装Python。https://www.python.org/downloads/
3. 下载并安装Perl。https://www.perl.org/
4. 下载并安装Ruby。http://www.ruby-lang.org/en/downloads/
注意:① 下载Ruby时选择安装包版本。
② 安装python,Perl,Ruby时要注意勾选添加环境变量到系统。
③ 检测三个环境是否安装好,打开cmd窗口:
Python的检测:Python
Perl的检测:Perl -v
Ruby的检测:Ruby -v
第一步:配置Qt的Makefile文件
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
QMAKE_LFLAGS_EXCEPTIONS_OFF =
QMAKE_LFLAGS_RELEASE = -Wl,-s
QMAKE_LFLAGS_DEBUG =
QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
QMAKE_LFLAGS_DLL = -shared
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
QMAKE_LFLAGS_EXCEPTIONS_OFF =
QMAKE_LFLAGS_RELEASE = -Wl,-s
QMAKE_LFLAGS_DEBUG =
QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
QMAKE_LFLAGS_DLL = -static
3. msvc版:
打开VS自带的命令提示窗口:
注:如果是编译x64的Qt,则需要打开VS2015 x64 本机工具命令提示符:
mingw版:
打开mingw32版Qt附带的命令行工具:
4. 通过cd命令进入qt源码目录:cd C:\qt_5.7.1_src
注:如果源码不在系统盘,则需要先用“盘符:”命令进入所在分区,如"D:"、"cd D:\qt_5.7.1_src"就进入了D盘的源码目录。
5. 输入Configure命令:
Qt 5.7.1:
Qt 5.8.0:
Qt 5.9.0(msvc版)
Qt 5.9.0(mingw版)
注:-prefix后跟的是编译完成后的安装目录,替换成自己的目录即可。
msvc版:
执行完成后会提示nmake:
mingw版:
第二步:编译Qt库
1.msvc版:
执行nmake命令:
2.mingw版:
执行mingw32-make命令:
注:此步大约会执行2~3小时。
2. 执行结束后没有报错说明编译成功,接下来安装到指定目录。
msvc版:执行nmake install命令。
mingw版:执行mingw32-make install。
注:此步大约执行10~20分钟。
3. 执行完成后没有报错说明安装成功,D:\msvc2015_static文件夹中即为最终的qt库。
第三步:配置Qt库
1. qt.conf文件指明qt库目录的前缀、文档目录和示例目录,如果将安装目录挪到别处则需要修改或新建。在bin文件夹下新建qt.conf文件,并输入以下内容:
注:① 文档和示例目录此处使用了官方的msvc2015动态编译版安装包中的目录,也可以删掉这两项。Prefix是存放Qt库的目录。
② 建议把静态的Qt库和动态的Qt库放在同一目录,这样可以直接复制动态Qt库目录下的qt.conf文件,或输入以下内容:
2. 复制动态库中的bin/qmlscene.exe到静态库的bin文件夹中。否则在Qt Creator中添加Qt库时会报qmlscene未安装的错误。
3. 此步是Qt 5.7.1的msvc版需要执行的步骤:从源码目录中复制pdb文件到安装目录的lib文件夹。
将下面文本复制到批处理文件中,然后放在lib文件夹中执行:
有些pdb文件不是放在lib文件夹的,此时需要按照pdb的名字进行搜索,将同名的pdb和lib放在一起。
最后删除批处理文件。
注:① 如果不执行此步,编译时会有“未找到PDB文件”的警告,且调试时无法跟踪到Qt的源码。
4. 从动态链接版的Qt库的bin文件夹中复制Qt5Core.dll到静态链接版的lib文件夹中。
注:① 如果不执行此步,在Creator的Qt Version中将会显示“x86-windows-unknown-pe-32bit”。
第四步:配置Qt Creator
1. 添加Qt Versions:
2. 新建一个构建套件,Qt版本选择刚添加的静态版,其他选项与动态版相同即可。