我想确切地了解变量和
:
之间的PN
的作用。
我知道它与
OVERRIDES
变量有关,如果:
后面的值在OVERRIDES
中,则会选择该变量。
如果是这样,我怎么能想到像
RDEPENDS:${PN}
和FILES:${PN}
这样的变量?
当我通过
OVERRIDES
检查bitbake -e
时,它显示的值为:
OVERRIDES="runtime-gnu:toolchain-gcc:linux:aarch64:pn-XXXX
但我在该值中找不到
${PN}
。
将
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
变量。