Yocto:如何根据两个选项值确定SRC_URI值

问题描述

我有一个包装的yocto食谱,其中有功能A和子功能AA和AB。所有这些(功能和子功能)在映像配置文件上都有其自己的enable标志。 既然它们都可以独立启用,那么我如何保证仅在同时启用了主要功能的情况下才考虑子功能

PACKAGECONfig_append = "${@bb.utils.contains('A','y',' a_is_enabled','',d)}"
PACKAGECONfig[a_is_enabled] = "-DENABLE_FEATURE_A=ON,-DENABLE_FEATURE_A=OFF,"

SRC_URI += "${@bb.utils.contains('A','file://files_for_A',d)}"

SRC_URI += "${@bb.utils.contains('AA','file://files_for_AA',d)}"

SRC_URI += "${@bb.utils.contains('AB','file://files_for_AB',d)}"

这是一个故障保护,以防映像配置文件被弄乱了!

谢谢!

解决方法

为了使AAAB依赖于A,请创建一个临时变量

EVAL_AA = "${@bb.utils.contains('AA','y','file://files_for_AA','',d)}"

然后,通过立即变量扩展:

SRC_URI_append := "${@bb.utils.contains('A','${EVAL_AA}',d)}"

如果AB取决于启用了AA

EVAL_AB = "${@bb.utils.contains('AB','file://files_for_AB',d)}"
EVAL_AB := "${@bb.utils.contains('AA','${EVAL_AB}',d)}"
SRC_URI_append := "${@bb.utils.contains('A',d)}"

不漂亮,但是可以! 是这样吗或者...有哪一种更漂亮或更容易?