QT5.15在Ubuntu22.04上编译流程

在我们日常遇到的很多第三方软件中,有部分软件针对开发人员,并不提供预编译成果物,而是需要开发人员自行编译,此类问题有时候不是问题(编译步骤的doc详细且清晰时),但有时候又很棘手(编译步骤的doc少,对应的configure脚本或者CMakeLists脚本又很长且缺少help选项)。本文就针对一款开发调试软件,但是需要依赖于QT5库进行编译生成,话不多说,开始进行编译QT5。


编译准备

在以前,QT5是往往是直接下载安装的,相信很多Windows端的开发人员都操作过。从官网下载QT时需要登录才能提供下载资源,这一步就很不友好。我们直接采用从镜像站去下载的方式,原来QT的版本仓库是有很多的预构建包供下载的,但是现在已经都被删除了,甚至都见不到5.9版本的踪影,QT最新是推荐QT6,但是由于依赖QT5的问题,所以我们采用最新的5.15.10的源码进行库编译。


编译QT5

QT5的编译步骤其实在QT的相关document中有介绍,其中就有在Linux上进行编译的编译指南。其中主要介绍的是依赖X11窗口系统进行编译。Ubuntu22.04使用的窗口系统是wayland,并非X11,所以这次编译的结果是否可以100%成功具有未知性。

先通过使用configure --help来查看编译脚本的一些可配置信息,可以看到大量的介绍信息,我们采用如下参数来进行预构建配置:

bash 复制代码
./configure \
-verbose \
-recheck-all \
-opensource \
-confirm-license \
-release \
-shared \
-c++std c++17 \
-make libs \
-nomake tests \
-nomake examples \
-skip qtandroidextras \
-skip qtmacextras \
-skip qtwinextras 
# 省略多个-skip, 可根据情况自己选择跳过哪些模块的编译

在执行配置的过程中,可以看到一些第三方库的可选安装信息,可根据自己的需求去进行安装,例如安装png库apt install libpng。 这边如果没有报错,那么就可以进行下一步编译了,执行make开始编译。


assimp库找不到的问题

编译报错Project ERROR: Library 'assimp' is not defined,在出现这个问题之前,我们已经通过apt install libassimp-dev安装了assimp库了,库版本是5.2.2。 为了解决这个问题,在网上搜索了一下此问题,并没有很好的解决方案。于是查找QT的相关网页与问题反馈,最后找到了一丝线索:

顺着线索,找到此问题的解决方案的页面,QT团队给出的解释居然是因为使用高于5.0.0版本的assimp库的开发者不多,所以他们并没有想修复此问题,于是这个问题在历代QT5中均会存在。解决方案也很简单,找到图中所框的脚本代码位置,改为框中的内容即可。

在经过这个修改后,发现确实生效,因为再次重新编译时遇到了不一样的错误。


pbrmaterial.h缺少宏定义的问题

这次的编译错误提示是找不到assimp相关的一个头文件中的一个宏定义。

经过确认,该问题在assimp 5.2.3中就得到了修复,而目前Ubuntu的apt仓库中拉取到的最新的为5.2.2,因此还是存在这个问题。所以解决方案就是:完整移除apt下载的assimp库,下载assimp最新源码并编译安装。这个库的编译与安装就不多展开了,比较简单也比较顺利。

等最新版本的assimp安装好后,再次进行QT5的编译即可。

相关推荐
Ulyanov12 小时前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio组件化开发与UI组件库构建
开发语言·python·qt·ui·雷达电子战系统仿真
梵高的向日葵�23916 小时前
OpenCV+MySQL+Qt构建智能视觉系统(msvc)
qt·opencv·mysql
Ulyanov16 小时前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio动画与动效系统深度解析
开发语言·python·qt·系统仿真·雷达电子对抗仿真
键盘会跳舞16 小时前
【Qt】分享一个笔者持续更新的项目: https://github.com/missionlove/NQUI
c++·qt·用户界面·qwidget
史迪仔011217 小时前
[QML] Qt Quick Dialogs 模块使用指南
开发语言·前端·c++·qt
咸鱼翻身小阿橙18 小时前
Qt页面小项目
开发语言·qt·计算机视觉
C++ 老炮儿的技术栈18 小时前
工业视觉检测:用 C++ 和 Snap7 库快速读写西门子 S7-1200
c语言·c++·git·qt·系统架构·visual studio·snap
Ulyanov19 小时前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio状态机深度应用:智能待办事项管理系统
开发语言·python·qt·gui·雷达电子对抗系统仿真
MinterFusion19 小时前
如何使用Qt5在窗口中显示矩形(v0.1.3)(上)
开发语言·qt·编程·明德融创·窗口中绘制矩形
笑春风oO19 小时前
使用国内镜像源加速Qt“更新/安装”的方法【Ubuntu篇】
开发语言·qt