操作步骤
1、下载安装QT5编译必要的工具
2、下载QT5源码并按需修改配置文件
3、进行动态库和静态库的编译
安装VS2022
下载安装Perl
下载 Strawberry Perl 的64位Portable版本并解压
Strawberry Perl 下载
下载安装Ruby最新本版
目前最新版本是rubyinstaller-3.0.3-1-x64.7z 下载后解压
下载Qt5.15.5源码并解压
注意: 下载的软件解压到非中文目录(vs2022集成的python不需要这一步)
添加Perl ,Ruby以及gnuwin32到Path环境变量(gnuwin32工具包含在QT源文件根目录下),工具路径如图所示
打开cmd,输入echo %path% 查看系统环境变量path信息
cmd输入:perl --version、ruby --version 以及 flex --version回车执行,正确输出各个工具版本信息则编译工具链配置完成。
开始编译
这里演示动态库编译和静态库编译(推荐QT使用方式是动态库的方式,虽然需要携带几个dll,但是这种方式是LGPL许可协议中商业许可的。如果使用静态链接打包QT库到单个可执行文件中,有着诸多的商用限制,具体查看相关的协议许可)
首先是QT的32位动态库编译,在左下角开始菜单中,查找打开 Visual Studio 2022文件夹下的 x86 Native Tools Command Prompt for VS 2022 Current,(编译64位库则打开x64 Native Tools Command Prompt for VS 2022 Current,编译32位库和64位库只有此处不同),cd命令进入到源文件根目录下,按行依次执行
configure -prefix “d:\qt5” -shared -release -nomake examples -nomake tests -skip qtwebengine -opensource -confirm-license
nmake
nmake install
上边的出错,就用下边的这个
configure -confirm-license -opensource -debug -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -nomake tests -no-compile-examples -nomake examples
-prefix 代表构建目录,是编译完成后,头文件和库文件的输出路径,建议这里的文件夹名全英文,否则可能会在最后nmake install 报copy命令语法不正确的错误
-shared -static 表示生成动态或静态库,不指定此参数默认是动态库
-release 生成release发布版,或指定 -debug调试版
-nomake 指定不编译输出的子文件夹
-skip 指定跳过编译的子模块
-opensource 表示编译开源版本,相对的是 -commercial ,表示编译商业版本
-confirm-license 表示确认许可协议
经过长时间的等待,在 prefix 构建目录下得到编译出来的QT头文件和库文件
静态编译(这里只是演示),重新编译建议删除整个源码目录并重新从压缩包解压,并重新指定或清除 prefix 构建库目录。静态库编译其他步骤与动态库编译相同,只需要修改configure命令中的 -shared 为 -static
configure -prefix “d:\qt5-s” -static -release -nomake examples -nomake tests -skip qtwebengine -opensource -confirm-license
nmake
nmake install
上边的出错,就用下边的这个
configure -confirm-license -opensource -static -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -nomake tests -no-compile-examples -nomake examples
QT静态库的编译需要注意编译选项/MD 、 /MT要和开发项目中引用的其他库相匹配。如果要修改此编译选项,可以在QT源文件根目录下的 qtbase\mkspecs\common\msvc-desktop.conf 中修改
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
或者
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
8、QT子模块的编译
这里只演示编译QT中子模块qtbase(只需要这个模块就可以完成QT中最主要的GUI功能的开发),其编译与整个QT的编译大体相同,打开x86 Native Tools Command Prompt for VS 2022 Current,cd命令进入到QT源文件根目录,按行依次执行命令
configure -prefix “d:\qt5-qtbase” -shared -release -nomake examples -nomake tests -opensource -confirm-license
nmake module-qtbase
cd qtbase
nmake install
编译qtbase模块的时间会比整个QT少得多。qtbase静态库的编译同样也只需要修改 -shared 为 -static,这里不赘述。
编译成功后,添加到QtCreat
D:\QtStaticBuild-IDE\qt-everywhere-src-5.15.5\qtbase\bin