编译环境:windows10,visual studio 2019,sdk 10.0.19xxx
说明
拿到了一个VS&QT开发的项目,刚开始安装QT5.14.2的exe版本安装程序和vs2019以及sdk10.0.19xxx,qtvs插件安装配置也没问题。使用vs导入后,没有报错,但是编译的时候会报多个类似的错误:
一种是无法打开源文件$(QTDIR)pluginsiconenginesqsvgicond.lib
。经过搜索后,本机不存在qsvgicond.lib
,但是存在同名的qsvgicond.dll
.
另外一种就是连同名的dll文件都不存在。经过搜索后发现,qt默认提供的是动态链接库形式的。
这里项目需要的是静态链接库,因而需要静态编译以构建项目中需要的.lib文件。
0x01 前置要求:
软件:
编译环境:我这里是visual studio 2019,sdk 10.0.19xxx。在installer运行时,点击修改,选择基于C++的桌面开发环境,SDK的话我这里装的是10.0.19xxx(查阅的一些资料讲要在10.0.18xxx及以上)
Perl: 下载最新版即可(https://strawberryperl.com/)
python:官方要求2.7及以后,我这里使用的是python3.8
jom:最新版即可。(非必须但建议)多核编译,用来提升编译速度,查的一些文档说nmake编译需要4个小时,使用jom后缩减到2小时。我这里的环境(CPU 2.5G*24)使用jom进行编译,只用了40分钟
ruby: 最新版即可(https://rubyinstaller.org/downloads/)。安装的过程中会出现三个框,一个是已经处于灰色的选中状态,另外两个框可以不用勾选,尤其是最后一个,可以看到它需要占用800+M。安装到最后一步请注意,它还会出现一个框让你去安装,内容是risk install
,可以取消勾选,点击finish安装完成。
源码
这里要注意QT和QTCreator是有区别的,通常安装QTCreator后,也要和vs一样要配置使用了什么版本的qt。
我这里要编译的是QT 5.15.1版本的源码
QT源码地址:https://download.qt.io/archive/qt/
-
将下载来的源码进行解压,解压得到下面文件夹:
e:qtqt-everywhere-src-5.15.1 -
另外新建两个目录
e:qtqt-5.15.1-build // build目录
e:qtqt-5.15.1-static // install目录
build目录是用来保存执行源码中的configure命令得到的结果,这样源码目录不会发生任何变动,方便进行编译不同版本
install目录是jom install或nmake install执行后,将编译完成的可执行程序和链接库等一系列资源复制到的目录(前提是在configure的时候设置了-prefix="e:qtqt-5.15.1-static")
0x02 编译
-
打开x86编译cmd
vs x86 -
切换到build目录
cd e:qtqt-5.15.1-build -
配置生成makefile
E:qtqt-everywhere-src-5.15.1configure -confirm-license -opensource -debug-and-release -static -static-runtime -nomake examples -nomake tests -skip qtwebengine -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -qt-sqlite -prefix e:qtqt-5.15.1-static
说明:
一些配置选项,详见参考的官方手册 -
编译
jom // 最大利用CPU处理器能力,编译的机器配置24核*2.5G,花费40min。真是难得的用满CPU的时候 -
复制编译后的文件到指定的prefix目录
jom install //将文件安装到指定的e:qtqt-5.15.1-static目录,8min -
配置
可以将e:qtqt-5.15.1-static目录复制到需要用到的地方,并进行配置。
vsqt插件的话是在qt version里面添加qmake所在的目录。qt version qt version
0x03 使用
-
vs市场中下载qt vs tools插件,在插件中配置qt目录
-
vs打开项目,如果提示无法打开源文件,则需要修改项目属性,修改为包含特定源文件的SDK
a. 项目属性->常规->widnows SDK版本
b.sdk配置 -
vs打开项目,如果提示未为项目设置qt version,则需要重新设置qt version,并apply,即使它已经显示在那里。
附件
附件:5.15.1&5.14.2静态库
链接:https://pan.baidu.com/s/1tjaA89ykqGL6p16Lgibv2Q
提取码:0519
References
[1]
VS2013编译Qt5.6.0静态库: https://www.cnblogs.com/oloroso/p/5577888.html[2]
precompiled-qt4-qt5: https://www.npcglib.org/~stathis/blog/precompiled-qt4-qt5/[3]
vs2019编译Qt5.13.2: https://cryfeifei.cn/2020/06/28/qt-compile-windows/[4]
vs2019+Qt5.15在线安装: https://www.codetd.com/en/article/13251786[5]
官方手册: https://doc-snapshots.qt.io/qt5-5.15/windows-building.html[6]
官方手册-前置要求: https://doc-snapshots.qt.io/qt5-5.15/windows-requirements.html[7]
官方手册-配置选项: https://doc-snapshots.qt.io/qt5-5.15/configure-options.html
原文始发于微信公众号(Zer0ne安全研究):开发|QT5静态库编译记录及资源
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论