Yocto项目 - 最新版OVERRIDES语法汇总

在 Yocto 项目中,Overrides(覆盖机制)是一种关键工具,用来根据硬件平台、架构、发行版等条件,动态调整变量和任务的值。在最新版本的 Yocto 项目中,Overrides 的功能得到增强,特别是针对文件路径查找引入了新的 FILESOVERRIDES 变量。以下是主要的 Overrides 变量及其用途的简明汇总,帮助理解不同条件下的配置灵活性。


1. OVERRIDES

OVERRIDES 是一个全局变量,列出当前构建环境的所有覆盖符,以 : 分隔。按顺序决定优先级,最左侧的覆盖符优先级最高。

示例:
OVERRIDES = "machine:os:arch"

在此设置下,优先使用带有 machine 覆盖符的变量或任务(例如 do_install:machine())。假设 MACHINE = "raspberrypi4",那么在 do_install:raspberrypi4() 任务中定义的内容会优先执行,用于特定的机器平台。


2. MACHINEOVERRIDES

MACHINEOVERRIDES 是专门为机器(硬件平台)定义的覆盖符,用于控制平台相关配置。它一般包含特定机器名称及其架构信息,使得在某些硬件上配置更精细。

示例:
MACHINE = "raspberrypi4"
MACHINEOVERRIDES =. "raspberrypi:arm"

在此例中,MACHINEOVERRIDES 包含了 raspberrypiarm,所以可以针对 raspberrypi 或通用 arm 平台设置特定的任务或变量。例如:

do_configure:raspberrypi() {
    echo "Configuring for Raspberry Pi"
}

do_configure:arm() {
    echo "Configuring for ARM architecture"
}

MACHINEraspberrypi4 时,do_configure:raspberrypi() 优先执行。如果未定义,则 do_configure:arm() 可作为备选方案。


3. DISTROOVERRIDES

DISTROOVERRIDES 用于特定发行版的配置管理。当构建目标为某个发行版时,DISTROOVERRIDES 可以添加特定的覆盖符,便于定制任务或变量。

示例:
DISTRO = "poky"
DISTROOVERRIDES = "poky"

在这里,DISTROOVERRIDES 包含了 poky,因此所有带有 :poky 覆盖符的变量或任务会在该发行版上优先使用。例如:

IMAGE_FEATURES = "default_features"
IMAGE_FEATURES:poky = "poky_specific_features"

DISTROpoky 时,IMAGE_FEATURES 将会使用 poky_specific_features,而非 default_features


4. FILESOVERRIDES

FILESOVERRIDES 是最新引入的变量,用于文件路径查找。当扫描 SRC_URI 中的文件时,构建系统使用 FILESOVERRIDES 以确定目录名。FILESOVERRIDES 通常包含 MACHINEOVERRIDESDISTROOVERRIDES 的值,以确保文件查找的灵活性。

示例:
FILESOVERRIDES = "arm:raspberrypi:poky"
SRC_URI = "file://config_${OVERRIDES}.txt"

在这个设置下,系统会优先查找 config_arm.txtconfig_raspberrypi.txt 等文件路径。这种方式确保文件查找能够根据平台、架构或发行版自动调整。


在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值