You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取BitBake配方中通过inherit指令继承的类列表?

获取BitBake配方中通过inherit指令继承的类列表

在Yocto Project Honister(v3.4.1)和BitBake 1.52.0环境下,要获取配方中通过inherit指令继承的类,可采用以下几种实用方法:

方法1:用bitbake -e解析配方并过滤结果

执行命令展开配方的完整执行环境,再提取inherit指令相关内容:

bitbake -e my-recipe | grep -E "^inherit"

如果需要同时查看INHERIT变量定义的类,可调整过滤规则:

bitbake -e my-recipe | grep -E "^inherit|^INHERIT"

bitbake -e会完整解析配方的所有指令和变量,能直接呈现inherit指令声明的所有类,包括通过其他继承类间接引入的。

方法2:直接检查配方与类文件

  • 打开目标配方文件(my-recipe.bb或对应.bbappend),直接查看所有inherit开头的行,获取直接继承的类。
  • 若存在间接继承的情况,可到meta-*/classes/目录下查看对应类文件的内容,确认该类是否又通过inherit引入了其他类。

方法3:编写自定义脚本程序化获取

若需要通过代码批量获取,可利用BitBake的解析接口编写脚本。创建list_inherited_classes.py文件,内容如下:

from bb.parse import handle

def list_inherited_classes(recipe_path):
    data = handle(recipe_path, True)
    inherited_classes = data.getVar("__inherit_cache", True) or []
    print("\n".join(inherited_classes))

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <recipe-path>")
        sys.exit(1)
    list_inherited_classes(sys.argv[1])

在构建环境中执行脚本:

python3 list_inherited_classes.py path/to/my-recipe.bb

该脚本会输出配方所有继承的类(包括直接和间接通过inherit指令引入的)。


内容的提问来源于stack exchange,提问作者Caglayan Dokme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:52:03