[software development] 使用deepin-shared-libs的Qt515快速编译Qt应用--cmake篇
Tofloor
poster avatar
Ziggy
deepin
2024-01-02 19:28
Author

UOS v20自带的Qt5.11在2022年以后的主流开源应用编译中显得有点力不从心了,因此deepin-shared-libs提供一套基于UOS v20 amd64、aarch64平台编译的Qt5.15.10 OpenGLES,目前可以从应用商店下载的OBS Studio就是基于该库编译的。

优势

相比把Qt libs直接集成到应用bundle中增加包体积,deepin-shared-libs的Qt515在deepin v20、v23和UOS v20上提供了仓库内的共同依赖,基于该Qt编译的应用直接调用公共库即可。且该方案提供了一套完整的模板,覆盖Qt主要环境变量以及是否选择加载DTK插件的功能。

准备工作

下载资源

在开始前,需要下载并安装对应的开发套件。提供了传统的deb包和归档包的形式可供下载:
Qt5.15.10 OpenGLES

DTK5

安装devel资源

  1. 使用deb安装将会自动安装所依赖的各包,安装后目录位于"/opt/deepin-shared-libs/Qt5.15.10gles"
  2. 若使用tar归档包安装,则需要手动根据包内的信息来安装到对应prefix和安装相应的依赖
    安装目录
    必要依赖:libglvnd-dev, libwayland-dev, libgles2-mesa-dev, libomp-13-dev

下载任意源码

下载任意要求Qt5.15的源码进行编译准备。可从readme、CMakeList.list等获取Qt版本要求,这里从cmake配置过程中的报错获取了Qt版本要求

截图_选择区域_20240102111818.png

编译操作

设置变量

为了保证能够正常识别出Qt515,因此要设置以下环境变量。这里下载的是归档包,安装目录在"/usr/local/qt5.15-gles"
在源码项目根目录中打开终端操作:

export PATH=/usr/local/qt5.15-gles:/usr/local/qt5.15-gles/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/qt5.15-gles/lib
export CMAKE_INCLUDE_PATH=/usr/local/qt5.15-gles/include

确认Qt版本正确

在设置完环境变量后,可通过"qmake -v"确认是否正确加载Qt515

➜  1 qmake -v
QMake version 3.1
Using Qt version 5.15.10 in /usr/local/qt5.15-gles/lib

开始编译

在完成以上步骤后,可以正式开始编译。我一般使用以下的编译参数(仅供参考,需要根据实际项目环境调整):

CC=/usr/lib/ccache/clang-13 CXX=/usr/lib/ccache/clang++-13 cmake
-DCMAKE_BUILD_TYPE=Release -GNinja -DCMAKE_CXX_STANDARD=17
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" -DCMAKE_C_FLAGS="-fuse-ld=lld"
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld"
-DCMAKE_INSTALL_PREFIX=/opt/apps/

配置启动脚本

该库亦同时提供了通用启动模板,根据实际需求对字段进行注释即可决定是否启动某功能。放置在程序的files目录下即可
需要修改的内容:是否加载/注释DTK5 插件、ARCH架构、exec可执行文件名

封装

在测试启动脚本、程序可以正常启动后即可按照自己习惯的方式进行打包,在依赖清单中加入"qt5.15gles-extra.runtime.szbt"即可,版本可参考发行历史
需要注意的是,若启用了DTK5插件功能,则需要附加上依赖"dtk5-gles.runtime.szbt"

联系我

本库为滚动维护,若存在bug、或需要加入其他extra libs,可在github仓库中提交issue,或加入Matrix聊天室一起讨论:#deepin-shared-libs:matrix.org
欢迎其他编译发烧友使用本库进行简单的编译和维护开源项目,也欢迎向deepin-shared-libs提交二进制libs包或其他编译文档。

Reply Favorite View the author
All Replies
nexfia
deepin
2024-01-02 20:47
#1

like

Reply View the author