Qt5.9源码静态编译教程:VS2017与MinGW详解

需积分: 9 5 下载量 105 浏览量 更新于2024-08-31 收藏 204KB DOCX 举报
本文档详细介绍了在Windows 10环境下使用MinGW和Visual Studio 2017两个编译器对Qt5.9.0源码进行静态编译的过程。首先,确保环境中已安装了Qt 5.9.0(附带MinGW 5.3.0 32位版本)和VS2017社区版。Qt的默认编译方式是动态链接,生成的可执行文件(exe)不能独立运行,需借助windeployqtxx.exe工具来找到并部署依赖的dll。 静态编译Qt源码的步骤分为四部分: 1. **环境准备**: - 下载Qt 5.9.0源码,并确保Python已安装,使用源码目录为qt-everywhere-opensource-src-5.9.0。 2. **修改编译参数**: - 对于VS2017: - 修改qtbase/mkspecs/win32-msvc/qmake.conf,参照其中的路径,进一步修改qtbase/mkspecs/common/msvc-desktop.conf,以支持静态编译。 - 对于MinGW: - 打开qtbase/mkspecs/win32-g++/qmake.conf,同样进行相应的静态编译配置。 3. **修复源码bug**: - 如果使用VS2017编译,需要处理特定bug。在qtbase/src/corelib/tools/qalgorithms.h文件中,替换有问题的代码。此步骤可能在其他版本的Qt中有所不同。 4. **编译过程**: - VS2017: - 在VS2017开发者命令提示符中操作,执行configure命令,选择平台(win32-msvc)、编译类型(debug或release)以及输出路径(如E:\Qt-lib\5.9.0-static-vs2017),然后执行make命令完成编译。 - MinGW: - 在名为"QT5.9forDesktop (MinGW)"的应用中,进入Qt源码根目录,同样执行configure(选择platform win32-g++),然后根据指引编译。 静态编译完成后,VS2017生成的exe文件会显著减小,因为不再包含庞大的dll依赖。然而,由于静态编译涉及的复杂性,需要注意可能存在的编译问题和性能影响。此外,文档还提到了动态编译与静态编译在大小和独立性上的对比,前者虽然exe较小,但需要额外的dll文件,而后者虽然exe较大,但无需外部依赖,适合对资源有限或者追求更稳定性的场景。