在yocto中,RDEPENDS:${PN}和FILES:${PN}等变量是否与OVERRIDES相关?

问题描述 投票:0回答:1

我想确切地了解变量和

:
之间的
PN
的作用。

我知道它与

OVERRIDES
变量有关,如果
:
后面的值在
OVERRIDES
中,则会选择该变量。

如果是这样,我怎么能想到像

RDEPENDS:${PN}
FILES:${PN}
这样的变量?

当我通过

OVERRIDES
检查
bitbake -e
时,它显示的值为:

OVERRIDES="runtime-gnu:toolchain-gcc:linux:aarch64:pn-XXXX

但我在该值中找不到

${PN}

yocto
1个回答
0
投票

OVERRIDES
视为可用于有条件地为变量赋值的功能。

示例

如果您有一个可以在各种机器上使用的配方,并且对于每台机器,您只需选择一个特定文件:

您拥有的机器列表:

  • machine1
    需要
    file1
  • machine2
    需要
    file2

现在在你的

recipes.bb

SRC_URI:append:machine1 = " file1"
SRC_URI:append:machine2 = " file2"

现在,由于您的机器自动存在于

OVERRIDES
变量中,因此
Bitbake
将在解析过程结束时,使用仅与当前机器兼容的值覆盖该变量。

因此,如果您的

MACHINE = "machine1"
SRC_URI
将附加
file2

  • PN
    变量:

OVERRIDES
变量包含
pn-${PN}
而不是
${PN}
,仅当您想设置一个仅与该配方相关而不是与任何其他配方相关的值的变量时,这才对配方有用。

实际上,这在菜谱本身内部没有用:

假设我们有一个名为

DEMO_OVERRIDE
的变量:

DEMO_OVERRIDE:pn-${PN} = "${PN}"

现在,在

local.conf
中我们为其设置默认值:

DEMO_OVERRIDE = "default_value"

现在,

bitbake -e | grep ^DEMO_OVERRIDE
将给出:
default_value
,但是:

bitbake -e <recipe> | grep ^DEMO_OVERRIDE
会给.

当您想要从

.conf
文件更改配方的变量时,这非常有用,如下所示:

SRC_URI:append:pn-<recipe> = " <value>"
  • 关于
    RPROVIDES
    FILES

PN
这些变量的规范仅用于拆分包列表以在打包任务结束时创建。通常用于
do_package_split
和其他任务,如下所示:

d.getVar('FILES:' + pkg)

...

d.getVar('RPROVIDES:' + pkg)

pkg
来自:
PACKAGES
变量。

© www.soinside.com 2019 - 2024. All rights reserved.