Back

Qt 5.15.2 MSVC2019 32 位静态编译

By Ming 四月 13, 2024 Qt

获取源码

清华镜像:
https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.zip

编译工具下载/COMPILER DOWNLOAD

打开源码目录下的 README 文件,查看当前版本 Qt 要求的 Windows 环境下编译需要安装的工具:

1
2
3
4
5
6
7
8
9
10
Windows:
--------

Open a command prompt.
Ensure that the following tools can be found in the path:
* Supported compiler (Visual Studio 2012 or later,
MinGW-builds gcc 4.9 or later)
* Perl version 5.12 or later [http://www.activestate.com/activeperl/]
* Python version 2.7 or later [http://www.activestate.com/activepython/]
* Ruby version 1.9.3 or later [http://rubyinstaller.org/]

编译环境选择:MINGW/MSVC

在 Windows 上,有两个预构建环境可供选择:一个是 MinGW,另一个是 Microsoft Visual Studio (MSVC)。这两个环境不兼容,无法混合。你必须选择一个。

这两者的区别如下:

当你的项目使用 MinGW 编译的使用,想要用一个 MSVC 编译生成的库时就会有问题。使用 MinGW 编译项目的时候,所使用的 Lib 也要是 MinGW 编译的。如果你只是开发 Window 平台的软件时,最好用 Qt MSVC 组合,这样可以使用大量的第三方 lib,还有很多的构建指令,毕竟 window 上 MSVC 才是王道。

我选择 MSVC,打开安装 VS 时自带安装的 MSCV:x64 Native Tools Command Prompt for VS 2019

1
2
3
4
5
6
7
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.4.5
** Copyright (c) 2019 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>

默认编译的结果是 64 位的 Qt

如果你想编译 32 位版本的 qt,可以选择 x86 Native Tools Command Prompt for VS 2019

警告:不要使用 Developer Command Prompt for VS 2019

如果你想在 linux 系统中进行 Qt 的编译工作,参考这个问答:c++ - How to compile Qt 5 under Windows or Linux, 32 or 64 bit, static or dynamic on Visual Studio or g++ - Stack Overflow

编译

在 D 盘新建一个目录用来存放编译好的内容:D:\qt

x64 Native Tools Command Prompt for VS 2019 的终端进入 Qt 源代码目录:

1
2
C:\Users\peter\Downloads>cd qt-everywhere-src-5.14.1
C:\Users\peter\Downloads\qt-everywhere-src-5.14.1>

修改源码里的 QTBASE\MKSPECS\COMMON\MSVC-DESKTOP.CONF 文件

修改 -MD 为 -MT

修改前:

1
2
3
QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd

修改后:

1
2
3
QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd

D 的意思是动态编译 (dynamic link),T 的意思是静态编译(static link)。

配置 CONFIG 文件:

配置命令如下:

1
configure.bat -prefix D:\QT\qt\5.15.2\msvc2019_32_static -confirm-license -opensource -debug-and-release -static -static-runtime -no-feature-d3d12 -platform win32-msvc -mp -nomake tests -nomake examples -nomake tools -gui -widgets -plugin-sql-sqlite

具体含义如下:

1
2
3
4
5
6
7
8
9
10
configure.bat
-static #指明是静态编译
-prefix "D:\qt" #指明安装的目录
-confirm-license -opensource #指明是开源版本的qt
-debug-and-release #指明需要debug版和release版,可以单独选择release版
-platform win32-msvc #指明使用msvc编译,这里的win32并不指32位
-nomake examples -nomake tests #不编译样例
-plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg #可选插件
-opengl desktop #用系统自带的opengl
-mp #多核编译

MAKE

上面提到过在 Windows 上,有两个预构建环境可供选择:一个是 MinGW,另一个是 Microsoft Visual Studio (MSVC)。

我选择的是 msvc 环境,使用命令 nmake 即可进行编译。

1
nmake

新版的 MSVC 可以进行多线程编译,旧版本的 MSVC 自带的 nmake 没有多线程编译功能,有一个替代功能的软件 jom 可以进行 nmake 的多线程编译。

jom 的下载地址:Jom - Qt Wiki

在刚才的终端中运行命令:

1
D:/jom_1_1_3/jom.exe

MAKE INSTALL

使用 nmake 单线程 install:

1
nmake install

添加到 QT CREATOR

添加 QT VERSIONS

注:若新增 qmake.exe 前出现黄色感叹号,可复制其它版本 bin 目录下的 qmlscene.exe 到该静态编译版本的 bin 目录下即可。

新建构建套件

新建构建套件,Qt 版本选择刚添加的静态版,记得编译器选自己编译时用的编译器。

Qt5.15.2 msvc 静态编译记录_-platform win32-msvc_themql 的博客-CSDN 博客

Qt 最新版 5.14 在 Windows 环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit - 灰信网(软件开发博客聚合)(freesion.com)

带 OpenSSL 库的静态编译版本

许可协议

本文由 Ming 原创,采用 CC BY-NC-SA 4.0 协议。转载请注明出处。

PERMALINK

https://iming.eu.org/2024/04/13/qt-static-compile/

Comments