我有一个使用bitbake的OpenEmbedded环境来做一些构建。我希望得到一些“交互式”的东西,bitbake会暂停并询问输入然后继续构建,但我发现这是不可能的。
由于我无法做到这一点,我正在寻找一些方法来为构建传递额外的标志。有没有办法将标志传递给bitbake构建类似gcc的-D
选项?
即:
bitbake -Dfoo=bar oe-myimage
因此,在oe-myimage
的构建过程中,变量foo
将设置为bar
。
答案 0 :(得分:15)
bitbake -Dfoo=bar oe-myimage
bitbake无法识别-D标志。因此,使用上述方法将无法正常工作。相反,您可以使用以下步骤从命令行指定标志 -
假设您要导出变量foo并期望它被bitbake识别。
export foo="foobar"
在采购oe-init-build-env之后,您需要将其导出并通过BB_ENV_EXTRAWHITE变量通知bitbake。这意味着
. oe-init-build-env
export foo="foobar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
将bitbake的变量'foo'列入白名单,从而使其在构建过程中对任何配方和子流程都可见。
在此之后你可以通过像 -
之类的表达式在bitbake中使用变量foo来调用任何bitbake操作${foo}
答案 1 :(得分:4)
你可以这样做:
export foo="bar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
bitbake oe-myimage
答案 2 :(得分:4)
虽然其他答案没有任何问题,但bitbake确实接受了--postread
参数,如here所示。这意味着您可以根据需要为一些临时配置文件编写尽可能多的bitbake变量,并通过在命令行中指定文件名来在bitbake.conf之后读取它。例如:
bitbake --postread=./extra.conf
我个人认为这比处理环境变量更方便。
答案 3 :(得分:0)
不,我不相信存在这样的机制。但你可以做点什么
"echo "foo = \"bar\"" >local.conf
不确定是否能解决您的特定问题。此外,还有一种本地站点范围变量的机制:如果您的主目录中有一个名为.oe的目录下的'site.conf'文件,bitbake将读取该文件并将这些变量应用于每个构建的全局环境。也许这会有所帮助?您没有准确指出您要解决的问题,可能有更好的方法。
答案 4 :(得分:0)
还有一种方便的命令行方式来执行此操作,这在bitbake手册中使用BB_ORIGENV进行了描述:
有时候,能够从原始执行环境中获取信息很有用。 Bitbake将原始环境的副本保存到名为BB_ORIGENV的特殊变量中。
为此,您可以按照建议的方式(从Python函数)读取变量:
origenv = d.getVar("BB_ORIGENV", False)
bar = origenv.getVar("BAR", False)
然后,从命令行传递它的方法很简单:
BAR=somevalue bitbake myimage