当前位置: 首页 > news >正文

使用 YoctoProject集成Qt6

By Toradex胡珊逢

在嵌入式领域中Qt 作为普遍选择的 UI 方案目前已经发布 Qt6 版本。本文将介绍如何为 Toradex 的计算机模块使用 Yocto Project 将 Qt6 集成到镜像里。

首先根据这里的说明,准备好Yocto Project 的编译环境。这里我们选择 Toradex 最新的 Linux BSP V6 为例,其基于 kirkstone 分支,这也是一个 LTS 版本。

进入layers 目录,使用下面命令下载 Qt6.4.3 版本的 meta-qt6 文件。

-------------------------------

git clone -b 6.4.3 git://code.qt.io/yocto/meta-qt6.git

-------------------------------

在meta-qt6/classes/ 目录下创建 populate_sdk_qt6.bbclass 文件。

-------------------------------

SUMMARY = "Meta package for building an installable Qt6 toolchain and SDK"

inherit populate_sdk populate_sdk_qt6_base

TOOLCHAIN_HOST_TASK:append = " nativesdk-packagegroup-qt6-toolchain-host"

TOOLCHAIN_TARGET_TASK:append = " packagegroup-qt6-modules"

FEATURE_PACKAGES_qtcreator-debug = "packagegroup-qt6-qtcreator-debug"

-------------------------------

在meta-qt6/recipes-qt/packagegroups/ 目录下创建 packagegroup-qt6-qtcreator-debug.bb 文件。

-------------------------------

SUMMARY = "Remote debugging tools for QtCreator integration"

LICENSE = "MIT"

inherit packagegroup

# Override by distro if needed

VIRTUAL-RUNTIME_qtcreator-debug-ssh-daemon ?= "openssh-sshd"

RDEPENDS:${PN} = " \

gdbserver \

${VIRTUAL-RUNTIME_qtcreator-debug-ssh-daemon} \

openssh-sftp-server \

qtdeclarative \

"

-------------------------------

在meta-toradex-demos/recipes-images/images/ 目录下创建 packagegroup-tdx-qt6.bb 文件。

-------------------------------

SUMMARY = "Packagegroup which provides most QT6 libraries and a QT6 demo"

PACKAGE_ARCH = "${MACHINE_ARCH}"

inherit packagegroup

PROVIDES = "${PACKAGES}"

PACKAGES += " \

${PN}-fonts \

${PN}-libs \

"

RRECOMMENDS:${PN} = " \

${PN}-fonts \

${PN}-libs \

"

SUMMARY:${PN}-fonts = "Some fonts useful for QT5"

RRECOMMENDS:${PN}-fonts = " \

ttf-dejavu-common \

ttf-dejavu-sans \

ttf-dejavu-sans-mono \

ttf-dejavu-serif \

"

SUMMARY:${PN}-libs = "QT5 libraries"

RRECOMMENDS:${PN}-libs = " \

qt3d \

qtbase \

qtcharts \

qtcoap \

qtconnectivity \

qtdatavis3d \

qtdeclarative \

qtimageformats \

qtlottie \

qtmqtt \

qtmultimedia \

qtnetworkauth \

qtopcua \

qtquick3d \

qtquicktimeline \

qtremoteobjects \

qtscxml \

qtsensors \

qtserialbus \

qtserialport \

qtsvg \

qttools \

qttranslations \

qtvirtualkeyboard \

${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'qtwayland', '', d)} \

qtwebchannel \

qtwebsockets \

"

-------------------------------

在meta-toradex-demos/recipes-images/images/ 目录下创建 tdx-reference-multimedia-qt6-image.bb 文件。

-------------------------------

require tdx-reference-minimal-image.bb

SUMMARY = "Toradex Embedded Linux Reference Multimedia Image"

DESCRIPTION = "Image for BSP verification with QT and multimedia features"

inherit populate_sdk_qt6

#Prefix to the resulting deployable tarball name

export IMAGE_BASENAME = "Reference-Multimedia-Image"

IMAGE_FEATURES += " \

${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'weston', \

bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11-base', '', d), d)} \

"

IMAGE_INSTALL += " \

packagegroup-tdx-cli \

packagegroup-tdx-graphical \

packagegroup-tdx-qt6 \

packagegroup-fsl-isp \

\

bash \

coreutils \

less \

makedevs \

mime-support \

net-tools \

util-linux \

v4l-utils \

\

gpicview \

media-files \

"

-------------------------------

在build/conf/bblayers.conf 将 meta-qt6 添加进来,并移除原来的 meta-qt5。

-------------------------------

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf

# changes incompatibly

LCONF_VERSION = "7"

BBPATH = "${TOPDIR}"

BBFILES ?= ""

BBLAYERS ?= " \

${TOPDIR}/../layers/meta-toradex-nxp \

${TOPDIR}/../layers/meta-freescale \

${TOPDIR}/../layers/meta-freescale-3rdparty \

\

${TOPDIR}/../layers/meta-toradex-bsp-common \

\

${TOPDIR}/../layers/meta-openembedded/meta-oe \

${TOPDIR}/../layers/meta-openembedded/meta-filesystems \

${TOPDIR}/../layers/meta-openembedded/meta-gnome \

${TOPDIR}/../layers/meta-openembedded/meta-xfce \

${TOPDIR}/../layers/meta-openembedded/meta-networking \

${TOPDIR}/../layers/meta-openembedded/meta-multimedia \

${TOPDIR}/../layers/meta-openembedded/meta-python \

${TOPDIR}/../layers/meta-freescale-distro \

${TOPDIR}/../layers/meta-toradex-demos \

${TOPDIR}/../layers/meta-qt5 \

\

\

${TOPDIR}/../layers/meta-toradex-distro \

${TOPDIR}/../layers/meta-yocto/meta-poky \

${TOPDIR}/../layers/openembedded-core/meta \

"

#${TOPDIR}/../layers/meta-qt5

-------------------------------

build/conf/local.conf 添加下面两个配比,移除 X11 和 directfb 相关配置。

-------------------------------

DISTRO_FEATURES:remove = " directfb x11"

IMAGE_INSTALL:remove = " gpicview"

-------------------------------

最后使用bitbake 命令即可编译包含 Qt6 的镜像和 SDK。

http://www.lryc.cn/news/37538.html

相关文章:

  • 「媒体邀约」如何选择适合的媒体公关,媒体服务供应商
  • html2canvas和jspdf导出pdf,每个页面模块占一页,在pdf中垂直居中显示
  • 数学小课堂:集合论的公理化过程(用构建公理化体系的思路来构建自然数)
  • 3.10多线程
  • 缓存双写一致性之更新策略探讨
  • scala高级函数快速掌握
  • 手写模拟SpringMvc源码
  • 五分钟了解JumpServer V2.* 与 v3 的区别
  • 用友开发者中心应用构建实践指引!
  • snap使用interface:content的基础例子
  • 蓝桥杯刷题第七天
  • FinOps首次超越安全成为企业头等大事|云计算趋势报告
  • 【深度强化学习】(3) Policy Gradients 模型解析,附Pytorch完整代码
  • Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)
  • 交流电机驱动器中的隔离电压感应
  • 爬取知乎问题答案
  • 通用智能理论
  • 保姆级使用PyTorch训练与评估自己的MixMIM网络教程
  • 《百万在线 大型游戏服务端开发》前两章概念笔记
  • 3BHE029110R0111 ABB
  • 实现防重复操作(JS与CSS)
  • 怎么合并或注销重复LinkedIn领英帐号?
  • Redis高频面试题汇总(中)
  • 【Flutter从入门到入坑之三】Flutter 是如何工作的
  • Web Components学习(2)-语法
  • Lesson 9.2 随机森林回归器的参数
  • Kubernetes Secret简介
  • Redis 哨兵(Sentinel)
  • 精读笔记 - How to backdoor Federated Learning
  • 即时通讯系列-N-客户端如何在推拉结合的模式下保证消息的可靠性展示