安装依赖
高版本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
- ICU的主要功能是负责全球编码的转换
- QT本身的转码能力已经能解决大多数问题
- 在官方的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
关于分支选择
-platform
选项可以选择编译成哪个版本- 使用
win32-msvc
分支时 编译成vs命令行
的版本 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
- 本文章是编译成vs静态项目
- 调试程序 需要 Debugging Tools for Windows
faq
- 本教程写于qt 5.12.0,使用vs2017.2019.1 编译成功
- vs版本过老的话即使编译成功也无法正常使用
- 编译 webengine_x86 要使用 x64_x86工具链(别高兴)
- web组件不支持静态编译
- 需要50G左右的硬盘空间
- 12G算力 多线程编译预计60分钟左右
- 静态编译有很多组件不能使用,qt核心模块都是支持的
关于使用
- 修改文件
qt.conf
(ANSI编码)中关于qt的安装目录,注意linux
格式的斜杠 - 将
qt.conf
放在qt_static\bin
目录下(qmake的目录) qmlscene
会提示未安装,无所的,这是个预览qml的插件,不影响编译
qt.conf 文件
[paths]
Prefix = C:/Qt/qt_static
也可以使用魔术位置
[paths]
Prefix = ..