首页 > 解决方案 > Yocto:如何根据两个选项值确定 SRC_URI 值

问题描述

我有一个包的 yocto 配方,其中我有功能 A 和子功能 AA 和 AB。所有这些(功能和子功能)在映像配置文件上都有自己的启用标志。既然它们都可以独立启用,我如何保证只有在主功能也启用的情况下才考虑子功能?

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', 'y', 'file://files_for_A', '', d)}"

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

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

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

提前致谢!

标签: yocto

解决方案


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

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

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

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

如果AB取决于AA启用:

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

不漂亮,但它有效!是这样吗?或者...有一个更漂亮或更简单的吗?


推荐阅读