自动安装包括在线安装的QT是不包括静态库的,给发行Qt带来困难。为了使用Qt的静态库,为此需要自己动手编译Qt,以下为可以编译通过的方式,使用Win10家庭版操作系统,其他的不可以(包括,说什么字符问题)
目前使用只有release和Profile版本可以用,Debug暂时有问题,还没有找到解决方案部分引自:https://blog.csdn.net/zhangpeterx/article/details/105099003
有结合最新修改
在默认情况下,用QtCreator编译程序时,使用的是动态编译。编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件。如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程序,那就需要使用静态编译。Qt官方不提供静态编译好的安装包,所以需要我们在自己的电脑上静态编译。而且exe文件会比动态编译的要大上很多。
Qt最新版5.14.1
的源码下载地址:
http://mirrors.ustc.edu.cn/qtproject/archive/qt/ 中国科技大学
https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/ 清华镜像
https://mirrors.cnnic.cn/qt/archive/qt/ 中国互联网络信息中心
http://mirror.bit.edu.cn/qtproject/archive/qt/ 北京理工大学
选择 安装版本 下的 single 目录
选择文件:qt-everywhere-src-×××××.zip
Qt官方文档要求编译工具:Qt for Windows – Requirements
打开源码目录下的README文件,查看当前版本Qt要求的Windows环境下编译需要安装的工具:
These tools are not needed to run Qt 5 applications, but they are required for building Qt 5 from source.
PATH
.PATH
.在Windows上,有两个预构建环境可供选择:一个是 MinGW ,另一个是Microsoft Visual Studio(MSVC)。这两个环境不兼容,无法混合。你必须选择一个。
这两者的区别如下:
当你的项目使用MinGW编译的使用,想要用一个MSVC编译生成的库时就会有问题。使用MinGW编译项目的时候,所使用的Lib也要是MinGW编译的。如果你只是开发Window平台的软件时,最好用Qt MSVC组合,这样可以使用大量的第三方lib,还有很多的构建指令,毕竟window上MSVC才是王道。
Windows建议选择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>
如果你想编译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
Perl 官网:Perl Download - www.perl.org
其中Windows版有2种可以下载,分别是ActivePerl
和Strawberry Perl
。其中ActivePerl
需要注册后下载,Strawberry Perl
可以直接下载,推荐Strawberry Perl
.
Strawberry Perl
下载地址:Strawberry Perl for Windows
安装时默认会添加ActivePerl到环境变量。
下载Python:Python Releases for Windows
推荐下载最新版Python.org
如果需要安装后手动添加Python到环境变量。
Ruby下载地址:RubyInstaller for Windows
安装时默认会添加Ruby到环境变量。
在D盘新建一个目录用来存放编译好的内容:D:\qt
在x64 Native Tools Command Prompt for VS 2019
的终端进入Qt源代码目录:
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)。
这一步官方教程没有要求,但其他人的很多教程里都有写,我就加上了
配置命令如下:
configure.bat -static -prefix "D:\qt" -confirm-license -opensource -debug-and-release -platform win32-msvc -nomake examples -nomake tests -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp
具体含义如下:
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 #多核编译
上面提到过在Windows上,有两个预构建环境可供选择:一个是MinGW,另一个是Microsoft Visual Studio(MSVC)。
我选择的是msvc环境,使用命令nmake即可进行编译。
nmake
jmake完成后源码和编译后的共有26G
使用nmake单线程install:
nmake install
安装完成后,将安装带上面设置的目录 d:\Qt
如果只安装Qt Creator,可以选择上述镜像的如下目录选择最新版本的 Qt Creator安装
也可以安装包含QT库以及qtcreator ,最新版本需要在线安装,安装文件在以下目录:
不同镜像站点可能有不同
这里需要说明一下,Qt Creator现在已经不能直接下载最新版本,需要在线安装:Index of /archive/online_installers/3.2
下载后安装最新版的Qt Creator4.9
新建构建套件,Qt版本选择刚添加的静态版,记得编译器选自己编译时用的编译器。
注意编译器版本选择和编译时相同的编译器
新建项目,成功运行:
一个exe的大小是13M,包括了所有需要的内容。
Qt 5.14.1 的静态编译的过程还算顺利,需要注意的是编译前要仔细阅读官方文档,毕竟很多教程不是最新的,但官方文档一般都是最新的。