yocto - 在 BitBake 中使用条件语法(覆盖)
问题描述
读一本关于 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
。有人能解释一下吗?
解决方案
Bitbake在lib/bb/data_smart.py中基于 Python 的 MutableMapping 实现了它自己的字典数据结构。目标是创建一个更灵活的字典,因为“键,值”对中的每个值都可以基于特定的标识符被覆盖。
如果您查看此字典中的变量是如何设置的,您将看到数据存储允许基于覆盖标识符列表“覆盖”变量。这些标识符应附加下划线,例如您的“TEST_os”示例。
在您引用的情况下,“其他”标识符不在 OVERRIDES 列表中,因此这个“智能字典”不会用“othercondvalue”覆盖 TEST 的值。但是,因为“os”标识符在 OVERRIDES 列表中,所以 TEST 的值确实被值“osspecificvalue”覆盖。
我强烈建议通读 DataSmart 类,因为这是一个非常简单的解释,但希望它有所帮助。
此外,有关更多信息,请参阅 BitBake 的OVERRIDES手册条目。
推荐阅读
- javascript - 如何在 javascript 函数中设置 request.getSession().setAttribute(obj, obj)
- javascript - 用css和jquery在圆圈中填充颜色的关键帧
- ajax - AJAX 发布到 Razor 页面中的处理函数
- java - 是否可以使用 Java 和 kotlin 来创建 Spring Boot 应用程序?
- html - 图片库过渡时的CSS淡入淡出
- python - 从 HTML 标签 Python/BeautifulSoup 获取第二个元素
- java - 在重复元素程序中遍历循环时出现 N 次问题
- apache - .htaccess 重定向适用于 .html 但不适用于使用 RewriteRule 的 .php
- git - Git 提交会忽略对某些子文件夹的更改。有关如何纠正问题的任何建议?
- javascript - AngularJS:当请求持续一分钟时,如何取消 block-ui 弹出窗口?