BitBake元数据文件使用相当简单明了的语法。
在某种程度上,它类似于Makefile和shell脚本的语法。
描述 | 注意事项 |
注释 | 第一列开始就写上#即是注释,除非它们在shell或者python函数的内部。 如下图第二行,就是一个非法的注释 |
变量 变量赋值 | 1、变量是无类型的,bitbake把所有赋给变量的值都视作字符串 2、变量命令规则与常用的规则相同,但是惯例是只有大写字母和下划线是被使用的 3、在.conf文件中定义的变量是全局的,在菜谱文件中定义的变量仅存活与他们自己的名字空间(每个菜谱有自己的名字空间) 4、变量赋值的例子: VAR = "value\"value\"value" 5、默认赋值用 ?= 默认赋值的意思是如果变量之前没有被设置过,那么它会被赋予默认值,如果它在默认赋值之前已经被设置过了,那么就保留它的值,默认赋值就不起作用。 6、变量扩展,与Makefile类似: VAR1 = "JOKE" VAR2 = "JUST A ${VAR1}" 7、直接变量扩展 := 直到变量被实际使用时才发生赋值 8、@操作符 @操作符告诉bitbake把随后的表达式视作python代码 |
变量追加 变量前新增 | 1、带空格的追加 += VAR1 = "12" VAR1 += "34" 最终VAR1为12 34 2、带空格的前新增 =+ VAR1 = "12" VAR1 =+ "34" 最终VAR1为34 12 3、不带空格的追加.=,不带空格的前新增=. 4、不带空格的追加${VAR1}_append,不带空格的前新增${VAR1}__prepend 5、去除_remove 去除是先将变量以空格为分隔符分为列表,然后去除所有符合情况的列表元素 VAR1 = "123 4356 123" VAR1_remove = "123" 最终VAR1为4356 |
包含指令
bitbake提供了两个包含指令
include optional.inc
required mandatory.inc
使用include指令时,即使找不到,它也能继续操作,但是require指令必须要找到,不然就报错
继承机制
bitbake有简单的继承机制。类可以被菜谱、追加文件和其他类使用inherit指令来继承
类是带有.bbclass文件名后缀的、被放置到元数据层的classes子目录中的元数据文件。