一些莫名其妙的原因要升级到Qt5,耗时几天,总结如下:
第1步:下载源码包:qtbase-everywhere-opensource-src-5.15.x.zip
第2步:安装下面程序:strawberry-perl-5.x.x; python-3.x.x; rubyinstaller-devkit-3.23.x.x
第3步:解压源码包到目录,如:\src-5.15\qtbase\,修改\mkspecs\common\msvc-desktop.conf:
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
第4步:打开x86 Native Tools Command Prompt for VS2017,进入源码目录执行:
configure -static -debug-and-release -opensource -confirm-license -nomake tests -nomake examples
第4步:执行namke,开始编译 。。。
说明:
1. 建议使用VS2017或之前版本编译,否则配置时Qt 5.15.x可能无法识别
2. Qt5开始,源码树被划分多个子模块,可以单独编译(完整的源码包约有900多Mb)
3. 安装perl,ruby后,确保环境变量被设置,命令行执行:
perl -version
ruby --version
4. 编译64位,运行x64 Native Tools Command Prompt,其它步聚相同
5. config_help.txt包含完成的配置选项,config.summary文件中包含配置后选项,修改配置后先删除config.cache再运行configure
6. 重新编译前先执行nmake clean
遇到的问题:
1. 编译dbus出错,加上: -no-dbus 不编译Qt D-Bus模块,还是报错:qdbusxml2cpp.cpp(83): error,找到include/qt5/QtCore/qconfig.h增加如下内容:
#if defined(QT_NO_DBUS) && defined(QT_DBUS)
# undef QT_NO_DBUS
#elif !defined(QT_NO_DBUS) && !defined(QT_DBUS)
# define QT_NO_DBUS
#endif
2. 报错:缺少flex,安装WinFlexBison,修改win_flex.exe文件名为flex.exe,设置环境:set path=%PATH%;d:\WinFlexBison
3. 报错:缺少llvm-cofig,安装LLVM(注意需对应Qt编译位数),发现没有llvm-config,下载llvm源码包单独编译tools其中的llvm-config,放到LLVM/bin
编译子模块qttools:
第1步:下载源码包:qttools-everywhere-src-5.15.x.zip
第2步:解压源码包到目录:如:\src-5.15\qttools
第3步:安装LLVM, 添加环境变量LLVM_INSTALL_DIR到安装目录:set LLVM_INSTALL_DIR=d:\LLVM
第4步:设置src-5.15.10\qtbase\bin到环境变量path,进入qttools子目当执行:
qmake
nmake