用VS2017编译Qt 5.15.x静态库

发布时间 2023-10-21 13:18:28作者: inthelight

一些莫名其妙的原因要升级到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