Featured image of post QT | Qt5.15.2 MSVC2019 32位静态编译

QT | Qt5.15.2 MSVC2019 32位静态编译

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环境下编译需要安装的工具:

   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

**********************************************************************
** 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源代码目录:

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

修改前:

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

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

配置CONFIG文件:

配置命令如下:

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

具体含义如下:

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即可进行编译。

nmake

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

jom的下载地址:Jom - Qt Wiki

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

D:/jom_1_1_3/jom.exe  

MAKE INSTALL

使用nmake单线程install:

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库的静态编译版本

使用 Hugo 构建
主题 StackJimmy 设计