Windows下通过MinGW编译源码安装Qt5
目前Qt在线安装程序已不支持Qt5系列,因为我们需要通过源码安装Qt5及以下版本。
MSVC编译Qt5源码的教程网上已经有很多了,由于本人已经安装了MinGW,因此采用MinGW编译QT源码。
自己编译的话只需要下载mingw-w64编译器和Qt的源码,之前在官方Wiki上看到还需要Perl,实际测试发现没有Perl也可以正常编译。
mingw-w64直接去mingw-w64官网下载就可以了,选择MingW-W64-builds下载。安装时记得架构记得选择x86_64,版本的话选择最新的就可以了,我编译时使用的是8.1.0没有问题。
Qt源码的话也去Qt官网下载,也可以选择镜像源:Index of /qt/archive/qt/5.15/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
在 Index of /qt/archive/qt/5.15/5.15.0/single/
下下载即可,single目录存储Qt源码,其他版本的Qt源码也是类似目录。
.tar.xz和zip均可。
安装环境
- MinGw-w64
- Perl version 5.12 or later(据说可以不用,没试)
下载好Qt安装包后直接进行解压.
修改
copy./configure -prefix 安装位置 -release -opensource -static -static-runtime -no-compile-examples -qt-sql-sqlite -opengl desktop -platform win32-g++
编译过程中如果出现以下问题,则需要修改文件.\qtbase\src\corelib\global\qt_windows.h
,详细请参考该链接(https://forum.qt.io/topic/138145/error-redefinition-of-struct-_file_id_info/4)
copy#if defined(Q_CC_MINGW) // mingw's windows.h does not set _WIN32_WINNT, resulting breaking compilation #ifndef WINVER #define WINVER 0x601 #endif # ifndef _WIN32_WINNT #define _WIN32_WINNT 0x601 #endif # ifndef NTDDI_VERSION #define NTDDI_VERSION 0x06000000 #endif #endif #ifndef NOMINMAX #define NOMINMAX #endif #include <windows.h> // 修改为 #include <windows.h> #if defined(Q_CC_MINGW) // mingw's windows.h does not set _WIN32_WINNT, resulting breaking compilation #ifndef WINVER #define WINVER 0x601 #endif # ifndef _WIN32_WINNT #define _WIN32_WINNT 0x601 #endif # ifndef NTDDI_VERSION #define NTDDI_VERSION 0x06000000 #endif #endif #ifndef NOMINMAX #define NOMINMAX #endif
我们将include <windows.h>
被放置在 Q_CC_MINGW 宏的上方,以便成功传递配置,便能解决这个问题
编译结束后安装:
copymingw32-make install mingw32-make docs mingw32-make install_docs
安装的过程可能会报错,可以直接把整个目录拷贝到安装目录,Qt程序(qmake等)一般在./qtbase/bin
路径下。
参考资料:
https://wohlsoft.ru/pgewiki/Building_Qt_on_MinGW-w64
https://bugreports.qt.io/browse/QTBUG-64298
https://forum.qt.io/topic/138145/error-redefinition-of-struct-_file_id_info/4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步