开发|QT5静态库编译记录及资源

admin 2022年5月23日01:39:57评论49 views字数 2602阅读8分40秒阅读模式

编译环境: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安装完成。

开发|QT5静态库编译记录及资源
vs安装组件


开发|QT5静态库编译记录及资源
ruby安装

源码

这里要注意QT和QTCreator是有区别的,通常安装QTCreator后,也要和vs一样要配置使用了什么版本的qt。
我这里要编译的是QT 5.15.1版本的源码
QT源码地址:https://download.qt.io/archive/qt/

  1. 将下载来的源码进行解压,解压得到下面文件夹:
    e:qtqt-everywhere-src-5.15.1

  2. 另外新建两个目录
    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 编译

  1. 打开x86编译cmd

    开发|QT5静态库编译记录及资源
    vs x86
  2. 切换到build目录
    cd e:qtqt-5.15.1-build

  3. 配置生成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
    说明:
    一些配置选项,详见参考的官方手册

  4. 编译
    jom // 最大利用CPU处理器能力,编译的机器配置24核*2.5G,花费40min。真是难得的用满CPU的时候

  5. 复制编译后的文件到指定的prefix目录
    jom install //将文件安装到指定的e:qtqt-5.15.1-static目录,8min

  6. 配置
    可以将e:qtqt-5.15.1-static目录复制到需要用到的地方,并进行配置。
    vsqt插件的话是在qt version里面添加qmake所在的目录。

    开发|QT5静态库编译记录及资源
    qt version


    开发|QT5静态库编译记录及资源
    qt version

0x03 使用

  1. vs市场中下载qt vs tools插件,在插件中配置qt目录

  2. vs打开项目,如果提示无法打开源文件,则需要修改项目属性,修改为包含特定源文件的SDK
    a. 项目属性->常规->widnows SDK版本
    b.

    开发|QT5静态库编译记录及资源
    sdk配置
  3. 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-qt5https://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静态库编译记录及资源

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月23日01:39:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   开发|QT5静态库编译记录及资源http://cn-sec.com/archives/1038085.html

发表评论

匿名网友 填写信息