六、Yocto给组件分组(packagegroups)

2024-04-01 08:20

本文主要是介绍六、Yocto给组件分组(packagegroups),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Yocto给组件分组(packagegroups)

本篇文章为基于raspberrypi 4B单板的yocto实战系列的第五篇文章:
一、yocto 编译raspberrypi 4B并启动
二、yocto 集成ros2(基于raspberrypi 4B)
三、Yocto创建自定义的layer和image
四、Yocto创建静态IP和VLAN
五、Yocto集成QT5

前面几篇文章中我们在iamge中集成了ROS2和QT5,还有一些我们自己的组件比如vlanconfg和qt的示例程序luncher,我们都是统一添加到IMAGE_INSTALL变量里面,如下所示:
在这里插入图片描述
这里有一个问题,后续我们引入的第三方组件越来越多,我们自己的应用程序越来越多这个地方是不是有点过于混乱了,有没有一种机制能够给这些包分个组呢,当然是有的,这就是我们马上要介绍的包组,也就是packagegroups。

给组件分组

我们按照刚才介绍的,将IMAGE_INSTALL里面添加的软件包简单分个类,比如ros的包、qt的基础包以及我们自己添加的包。
那我们就可以在meta-rpi-robot/recipes-core/下面添加一个文件夹packagegroups,并且创建3个packagegroup的bb文件:

mkdir -p meta-rpi-robot/recipes-core/packagegroups
cd meta-rpi-robot/recipes-core/packagegroups
touch packagegroup-ros.bb
touch packagegroup-qt5.bb
touch packagegroup-rpi-robot.bb

里面的内容如下:

packagegroup-ros.bb

DESCRIPTION = "RaspberryPi Test Packagegroup"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"PACKAGE_ARCH = "${MACHINE_ARCH}"inherit packagegroupRDEPENDS:${PN} = "\ros-core \turtlesim \
"

packagegroup-qt5.bb

DESCRIPTION = "RaspberryPi Test Packagegroup"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"PACKAGE_ARCH = "${MACHINE_ARCH}"inherit packagegroupRDEPENDS:${PN} = "\fontconfig \ttf-bitstream-vera \qtbase \qtbase-plugins \qtdeclarative \qtdeclarative-qmlplugins \qtquickcontrols2 \
"

packagegroup-rpi-robot.bb

DESCRIPTION = "RaspberryPi Test Packagegroup"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"PACKAGE_ARCH = "${MACHINE_ARCH}"inherit packagegroupRDEPENDS:${PN} = "\luncher \vlanconfig \
"

这样后面我们添加自己的组件就添加到packagegroup-rpi-robot.bb这个里面就好拉。

组合packagegroups

上面我们对组件进行了分组,那我们的rpi-robot-image.bb文件里面还是要将刚才的几个包组引入进来才行,改造一下rpi-robot-image.bb:

DESCRIPTION = "core-image-base for rpi robot"
LICENSE = "MIT"#require recipes-core/images/core-image-base.bb
inherit core-imageIMAGE_FSTYPES = "ext4.xz rpi-sdimg"
SDIMG_ROOTFS_TYPE="ext4.xz"DISTRO_FEATURES:append = " opengl"
DISTRO_FEATURES:remove = " x11"IMAGE_FEATURES += "ssh-server-openssh"IMAGE_INSTALL +=" \packagegroup-rpi-robot \packagegroup-ros \packagegroup-qt5 \
"

大功告成,这样看起来是不是简洁许多呢。

这篇关于六、Yocto给组件分组(packagegroups)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866679

相关文章

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言