我正在为一个个人项目玩yocto。我有一个叫做meta-nightcore
的层,里面有几个用不同语言写的文件:bash, Python, C, c++和几个食谱。
当用户定义变量NIGHTCORE_ENABLED
时,调用bitbake <image_name>
时是否可能排除meta-nightcore
?这个变量在调用source oe-init-build-env
之前通过shell命令设置。
如果你有不同的想法,你也可以分享吗?
谢谢,致以最诚挚的问候。Duy Tran
是的,您可以将环境变量传递到构建环境中,然后使用它来有条件地添加额外的层。
你需要修改你的bblayers.conf
来存储NIGHTCORE_ENABLED
的默认值,并添加额外的层到BBLAYERS
,如果它被设置为1
:
NIGHTCORE_ENABLED ?= "0" # overridden by env if specified in BB_ENV_EXTRAWHITE
NIGHTCORE_LAYERS ?= "/path/to/poky/meta-nightcore"
BBLAYERS ?= "
/path/to/poky/meta
/path/to/poky/meta-poky
/path/to/poky/meta-yocto-bsp
${@bb.utils.contains('NIGHTCORE_ENABLED', '1', '${NIGHTCORE_LAYERS}', '', d)}
"
然后,您需要告诉Bitbake允许通过将环境变量添加到BB_ENV_EXTRAWHITE
来将其捕获到Bitbake数据存储中:
export NIGHTCORE_ENABLED=1
export BB_ENV_EXTRAWHITE="${BB_ENV_EXTRAWHITE} NIGHTCORE_ENABLED"
你可以运行bitbake <image_name>
.
因为bblayers.conf
通常是在第一次运行source oe-init-build-env
时生成的,所以您可能希望使用TEMPLATECONF
来创建一个已经包含了这个额外逻辑的bblayers.conf.sample
文件。
这里也有一些相关的答案:
是否可以将命令行变量传递到bitbake构建?