六、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

相关文章

Java中的stream流分组示例详解

《Java中的stream流分组示例详解》Java8StreamAPI以函数式风格处理集合数据,支持分组、统计等操作,可按单/多字段分组,使用String、Map.Entry或Java16record... 目录什么是stream流1、根据某个字段分组2、按多个字段分组(组合分组)1、方法一:使用 Stri

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

PyQt6中QMainWindow组件的使用详解

《PyQt6中QMainWindow组件的使用详解》QMainWindow是PyQt6中用于构建桌面应用程序的基础组件,本文主要介绍了PyQt6中QMainWindow组件的使用,具有一定的参考价值,... 目录1. QMainWindow 组php件概述2. 使用 QMainWindow3. QMainW

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n