安装依赖

  1. 2.7.5<python<3
  2. perl
  3. ruby
  4. GPerf
  5. Bison, Flex
  6. jom
  7. DX SDK
高版本vs 内可以安装新版 dxsdk

以上依赖的执行文件全部要添加到 环境变量

可选依赖 ANGLE

  • Qt <5.12:在Windows Kit 8之前使用Windows SDK构建ANGLE需要安装DirectX SDK,并且要将d3d_compiler .dll的路径添加到PATH变量中
  • Qt>=5.12:Qt至少需要一个Windows 10 SDK才能构建ANGLE。无需额外的手动设置

angel将图形功能转化给dx实现,更好的兼容性以及性能

可选依赖 ICU

  1. ICU的主要功能是负责全球编码的转换
  2. QT本身的转码能力已经能解决大多数问题
  3. 在官方的QT版本中已经弃用ICU

略过

可选依赖 openssl

如果你需要以下qt模块支持ssl就需要这个依赖

QDtlsClientVerifier::GeneratorParameters

QDtls

QDtlsClientVerifier

QDtls::HandshakeState

QDtlsError

QSsl

QSslCertificate

QSslCertificateExtension

QSslCipher

QSslConfiguration

QSslDiffieHellmanParameters

QSslEllipticCurve

QSslError

SSL error

QSslKey

QSslPreSharedKeyAuthenticator

QSslSocket

略过

编译

修改配置文件使用静态编译

修改配置文件

D:\Qt\Qt5.12.0\5.12.0\Src\qtbase\mkspecs\common\msvc-desktop.conf

# 将动态链接改为静态链接

#-MD->-MT
#-MDd->-MTd

qt5.6+ 中增加-static-runtime选项,理论上可以达到同样的效果

配置编译条件

首先打开vs命令行,设置工作目录为qt源码目录

#设置安装目录

set path_install=D:\build_qt\qt_static

#编译32位/64位

configure -confirm-license -opensource -debug-and-release -static -force-debug-info -prefix %path_install% -nomake examples -nomake tests -platform win32-msvc -static-runtime

关于分支选择

  1. -platform选项可以选择编译成哪个版本
  2. 使用win32-msvc分支时 编译成 vs命令行的版本
  3. winrt-x64-msvc2017分支有代码质量问题,不推荐使用

查看支持的选项

configure -h

这里有一个巨坑:
二次configure会导致编译失败,需要手动清理config产生的临时文件

重新检查config需要删除以下文件:

D:\Qt\Qt5.12.0\5.12.0\Src\ 下新生成的一些临时文件
主要:
config.cache
config.log
config.opt
config.status.bat
config.summary
Makefile
.qmake.cache
.qmake.stash
.qmake.super


D:\Qt\Qt5.12.0\5.12.0\Src\qtbase\qmake 下新生成的一些临时文件

make

编译安装

nmake
nmake install //安装目录下的文件就是打包后的qt静态库

编译的临时文件

D:\Qt\Qt5.12.0\5.12.0\Src\qtbase\lib

清除上一次编译:
使用相同源码二次编译除了要清理上次编译的文件还需要清理configure,需要很长世间(测试下来不如直接删了重新解压)

nmake clean

多核编译

可以用jom替换nmake来多线程编译
qt creator 自带jom

D:\Qt\Qt5.11.2\Tools\QtCreator\bin\jom.exe

debug cdb

  1. 本文章是编译成vs静态项目
  2. 调试程序 需要 Debugging Tools for Windows

faq

  1. 本教程写于qt 5.12.0,使用vs2017.2019.1 编译成功
  2. vs版本过老的话即使编译成功也无法正常使用
  3. 编译 webengine_x86 要使用 x64_x86工具链(别高兴)
  4. web组件不支持静态编译
  5. 需要50G左右的硬盘空间
  6. 12G算力 多线程编译预计60分钟左右
  7. 静态编译有很多组件不能使用,qt核心模块都是支持的

关于使用

  1. 修改文件qt.conf(ANSI编码)中关于qt的安装目录,注意linux格式的斜杠
  2. qt.conf 放在qt_static\bin目录下(qmake的目录)
  3. qmlscene会提示未安装,无所的,这是个预览qml的插件,不影响编译

qt.conf 文件

[paths]
Prefix = C:/Qt/qt_static

也可以使用魔术位置

[paths]
Prefix = ..
Last modification:November 19, 2020
如果觉得我的文章对你有用,请随意赞赏