在BitBake中使用条件语法(覆盖)

时间:2018-05-08 03:50:11

标签: yocto bitbake

阅读a book on Yocto。进入以下页面,其中说:

  

BitBake提供了一种非常易于使用的方式来编写条件元数据。   它由一种称为覆盖的机制完成。

     

OVERRIDES变量包含以冒号(:)和。分隔的值   每个值都是我们想要满足条件的项目。所以,如果我们有一个   变量是以arm为条件的,而arm是在OVERRIDES中,然后是   使用特定于arm的变量的版本而不是   非条件版本,如图所示:

OVERRIDES = "architecture:os:machine"
TEST = "defaultvalue"
TEST_os = "osspecificvalue"
TEST_other = "othercondvalue"
     

在此示例中,由于条件,TEST将为osspecificvalue   os在OVERRIDES

我不清楚这个解释TEST如何变得等于osspecificvalue。有人能解释一下吗?

1 个答案:

答案 0 :(得分:1)

Bitbake基于MutableMapping中的Python lib/bb/data_smart.py实现了自己的字典数据结构。目标是创建一个更灵活的字典,其中"键,值"可以根据特定标识符覆盖对。

如果你看看如何设置这个字典中的变量,你会发现数据存储区允许"覆盖"基于覆盖标识符列表的变量。这些标识符应附加下划线,例如" TEST_os"。

在您引用的情况下,"其他"标识符不在OVERRIDES列表中,所以这个"智能字典"不会使用" othercondvalue"覆盖TEST的值。但是,因为" os"标识符在OVERRIDES列表中,TEST的值确实被覆盖了值" osspecificvalue"。

我强烈建议您阅读DataSmart类,因为这是一个非常简化的解释,但希望它有所帮助。

另请参阅OVERRIDES的BitBake手册条目以获取更多信息。