首页 > 解决方案 > 如何在具有相同可见性的 bitbake 配方中声明自定义变量,例如 ${bindir}?

问题描述

我正在使用yocto bitbake构建自定义的 linux 映像。

我有 2 个bitbake食谱。recipe-1recipe-2recipe-1在 linux 输出图像中创建一个目录。目录名称是mydir

recipe-1

SUMMARY="Creates direcory"
LICENSE = "CLOSED"

FILES_${PN} += "${sysconfdir} /mydir"

do_install_append () {
    install -d ${D}/mydir
}

让我们来recipe-2recipe-2想要将一个文件myfile称为mydir

recipe-2

SUMMARY="Wants to place a file in mydir created by recipe-1"
LICENSE = "CLOSED"
DEPENDS = "recipe-1"

SRC_URI = " file://myfile"

S = "${WORKDIR}"

do_install_append () {
    install -m 600 ${WORKDIR}/myfile ${D}/mydir  # bibake build complains that mydir is not found
}

问题:
在我recipe-2之后提到的基本配方中recipe-1recipe-2依赖于recipe-1. 这很好,但 bitbake 构建抱怨mydir无法识别。我明白这个问题。我需要mydirrecipe-2. 我怎样才能做到这一点?

问题:
我可以在我的配方构建系统中将 ,mydir的输出recipe-1设为全局变量吗?像 等的全局${bindir}变量${datadir}?如果我可以将其作为 building 的一部分recipe-1,那么这可能是一个优雅的解决方案吗?

所以,我希望使用自定义变量让${mydir}我们do_install_appendrecipe-2?并在中做这样do_install_append的事情recipe-2

install -m 600 ${WORKDIR}/myfile ${D}/${mydir}

可能吗?

标签: embedded-linuxyoctobitbakeopenembedded

解决方案


每个配方的安装目标都是独立的,并且在安装开始时始终为空,因此您需要在其中创建任何目录。其他食谱所做的没有任何后果。

如果要从单个位置设置 ${mydir},请将其放入一个类中,并使每个配方继承该类。


推荐阅读