安装与编译最简 windows qt


类型:C++ & Qt4,创建时间:June 11, 2020, 11:48 a.m.

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/109/。

Qt 为 windows 提供了一个在线安装包,以及一个巨大的离线安装包。使用在线安装包能够自由选择 Qt 版本。使用离线安装包可以在不需要网络地方或者在多台机器上使用。

但是两个安装器安装的 Qt 容量都太过于巨大了,包含了所有的 Qt 模块以及它们的 debug 信息。如果我们只使用 C++ 以及 QtWidgets 做 Qt 开发,就没必要安装那么多的组件,浪费空间。这时候可以考虑自己编译一下 Qt

首先下载 Qt 所需要的 mingw32 或者 mingw-w64. 自 Qt 5.6 以后,需要 c++11 支持,所以 Mingw32 就不能再使用了,所以我们这里下载的是 mingw64 7.3.0:

http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/desktop/tools_mingw/qt.tools.win32_mingw730/7.3.0-1-201903151311i686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z

64 位的 mingw64 7.3.0

http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/desktop/tools_mingw/qt.tools.win64_mingw730/7.3.0-1x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z

下载后解压到:

C:\Qt\mingw730\

再下载 Qt 源代码:

http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/5.12/5.12.5/submodules/qtbase-everywhere-src-5.12.5.zip

在这个目录里面有 .tar.xz 和 .zip 两个格式的压缩包。前者适合 linux,而后者适合 Windows. 前者其实也可以在 Windows 下编译,只是额外需要 Perl 解释器。

把这个文件解压缩到:

C:\Qt\qtbase-everywhere-src-5.12.5

然后就可以开始编译了:

首先切换目录以及把 mingw32 的命令行加入到 %PATH% 里面:

cd C:\Qt\qtbase-everywhere-src-5.12.5
path %PATH%;C:\Qt\mingw730\bin

如果是 32 位的 mingw 有个 BUG,需要修改一下 Qt 源代码。看附注。

接着开始编译。

configure.bat -prefix C:/Qt/5.12.5/ -opensource -release -shared -no-icu -opengl desktop -no-style-windowsvista  -optimize-size -nomake examples -nomake tests
mingw32-make -j4

其中-optimize-size让 qt 编译出比较小的 dll, 两个-nomake不编译 examples 和 tests 可以节省编译时间。-no-icu去掉 icu 的依赖.

编译完安装。

mingw32-make install

此外,还可以独立安装 QtCreator 而不必使用 Qt 安装包。

http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/desktop/tools_qtcreator/qt.tools.qtcreator/4.12.2-0qtcreator.7z

qtcreator 的 msvc 运行时包(一般系统里面已经有了不用安装): http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/desktop/tools_vcredist/qt.tools.vcredist_msvc2019_x86/2019-05-19-1vcredist_msvc2019_x86.7z

==========================================

附注1,32位 mingw64 有个 rdrand 的 BUG 需要修复一下

所以在编译开始之前修改这个文件:

src/corelib/global/qrandom.cpp

这段代码:

#if defined(Q_PROCESSOR_X86) && QT_COMPILER_SUPPORTS_HERE(RDRND)
static qsizetype qt_random_cpu(void *buffer, qsizetype count) Q_DECL_NOTHROW;

修改成

#if defined(Q_PROCESSOR_X86_64) && QT_COMPILER_SUPPORTS_HERE(RDRND)
static qsizetype qt_random_cpu(void *buffer, qsizetype count) Q_DECL_NOTHROW;

在 32 位的情况下降低一点安全性。

==========================================

附注2, windows vista style 需要 windows sdk,使用 mingw 不能编译通过。

所以参数里面加上了-no-style-windowsvista

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/109/。


暂时还没有任何评论。


何不来发表一下您对本文的看法(使用Markdown语法,分段空两行):