【发布时间】:2021-12-10 06:19:35
【问题描述】:
在官方的 bitbake 文档中,有一个立即扩展的示例 (here),它实际上指出:
在这个例子中:
T = "123" A := "test ${T}" T = "456" B := "${T} ${C}" C = "cval" C := "${C}append"最后我们得到这些值:
- A 包含
test 123,- T 包含
456- B 包含
456 cvalappend- C 包含
cvalappend。
但同样的官方文档也指出(source,最后一段):
如果变量扩展语法用于不 存在,字符串保持原样。例如,给定以下 赋值,
BAR扩展为文字字符串${FOO},只要FOO不存在。BAR = "${FOO}"
这就是为什么在我看来,第一个引用块中的所有值似乎都是合理的,除了 B 在我看来应该包含 456 ${C}。
但官方文档确实给出了简要说明:
这是因为对未定义变量的引用按原样保留 在(立即)扩张期间。
A:我不明白这个解释。谁能帮我理解一下?
这一切只是一个更大问题的一部分......事实上,我什至不知道如何正确读取 BitBake 源文件,其中一些变量/覆盖立即分配,一些变量/覆盖在何时分配变量被使用,有些是在解析整个文件后分配的,即匿名函数。
这是一个很大的困惑......目前我怀疑是否可以正常逐行读取源文件?我是否应该首先搜索所有直接操作(:=、+=、=+、.=、=.)并仅读取这些行,然后重新读取省略匿名函数的 netire 源文件,以及然后重新读取整个源文件,然后只读取匿名函数。最后在我的脑海中合成所有内容?你知道我的大脑内存有限...所以...
B:读取 Bitbake 源文件最有效的方法是什么?
【问题讨论】:
标签: bitbake