Недавно я предпринял набег на создание встраиваемых систем на основе Linux, что сильно отличается от моих обычных встраиваемых систем, где у меня есть полный контроль над всем.
В рамках этого я изучаю систему сборки Yocto/bitbake/OpenEmbedded.
Есть одна вещь, с которой я борюсь, и это концепция слоев, поэтому я пытаюсь выяснить, как слои используют/влияют на другие слои.
Насколько я понимаю на сегодняшний день, файл рецепта .bb
использует require
, чтобы просто включить другой файл, подобно #include "myheader.h"
C, который обычно выглядит локально.
Файл .bbappend
в «верхнем» слое будет автоматически включать в себя базовый файл, а затем вносить в него изменения, что-то вроде присущего require
.
Напротив, ключевое слово inherit
ищет файл класса .bbclass
во многом таким же образом, как и файлы .bb
, и наследует от них все детали (вроде #include <stdio.h>
, которое опять обычно ищет в системная область(a)).
Итак, первая часть моего вопроса: правильно ли я понимаю? Или я слишком упрощаю?
Затем вторая часть моего вопроса включает использование BBEXTENDS
в свете моего текущего понимания. Если у нас уже есть возможность расширить рецепт с помощью require
, в чем смысл перечисления указанных рецептов в переменной BBEXTENDS
?
(a) Да, я знаю, что они оба полностью зависят от реализации с точки зрения того, откуда берутся заголовки, я просто говорю об их общем использовать.