bou*_*rne 2 yocto yocto-recipe
Yocto 是新手,但仍在熟悉它,因此可能是一个天真的问题,因此我对何时为包创建 inc 或 bb 文件进行了澄清。假设我有一个包 A 并且我的项目已经有一个配方 bb 文件A.bb。现在,如果我要为不同的项目 B 添加新的依赖项,那么我仍然不确定是否应该为项目 B 创建一个 inc 文件,而不是像这样B.inc将其包含在其中,还是应该为项目创建一个 bb 文件B 相反,让我们说and 而不是添加到 中。A.bbrequire B.incB.bbinherit BA.bb
我的另一个澄清是,如果我理解正确,你的包可以覆盖/附加内容到 bb 食谱,就像X.bb
创建 bbappend 文件一样X.bbappend覆盖/附加内容到 bb 配方,但对于 can inc 文件也是如此,以及您的包创建什么文件等。提前致谢。
我还需要询问如何在 .inc 文件中应用补丁,例如,如果我需要在我发现的内容中应用补丁,A.bb如果代码配方看起来像这样
SRC_URI = "git://foopackage;protocol=ssh;branch=mainline;/
file://foo.patch \
"
Run Code Online (Sandbox Code Playgroud)
我需要做的就是在子文件夹 foo 中添加一个 foo.patch ,它将被应用,对于 inc 文件也是如此,即如果我有B.inc文件并且它是这样的
SRC_URI = "git://barpackage;protocol=ssh;branch=mainline;/
file://bar.patch \
"
Run Code Online (Sandbox Code Playgroud)
这是否意味着我需要在B.inc要应用补丁的文件夹中创建一个子文件夹栏。
文件.bb是一个配方,可以说这是一个顶级实体。
您可以使用文件将新信息逐字附加到配方中.bbappend- 当您构建配方(.bb文件)时,所有相关.bbappend文件将被合并。文件.bbappend还可以包含一些已在.bb文件中声明的信息,在这种情况下.bbappend版本将生效。您还可.bbappend以为同一配方创建多个文件。当它们位于不同层时,层的优先级决定它们的应用顺序。.bbappend文件需要与对应的文件同名才能.bb生效(%允许使用版本通配符)。当您出于某种原因需要修改原始配方时,将使用它们:删除/添加文件、添加补丁或更改配置等...
.inc文件不是食谱。它们可以包含在食谱中(甚至可以包含.bbclass在其他.inc文件中)。它们的工作方式与 C/C++ 中的包含头几乎相同。它们用于避免食谱重复。当您将它们包含在配方中时include whatever.inc,包含文件的内容基本上会复制到配方中,而不是包含语句(就像预处理期间的 C/C++ 一样)。您不能仅使用包含文件构建任何内容 - 包含文件必须包含在其他实体中。例如,我个人.inc在 Firefox 和 Thunderbird 中广泛使用文件:它们使用几乎相同的构建过程,许多源是相同的,等等...在文件中,.bb我仅指定应用程序之间的差异,将公共部分提取到同一文件夹中的 .inc 文件,并且该文件由两个配方使用。
由于我们正在讨论主题,值得一提的是您可以在您的食谱中使用include whatever.inc或。require whatever.inc他们的效果几乎一模一样。但是,当您使用require,并且指定的文件不存在时,会生成致命错误并停止构建。使用 时include,即使找不到指定的文件,构建也会继续。
关于继承:您不能继承其他配方,也不能包含文件。您可以继承类 ( .bbclass)。类的行为方式与.inc文件非常相似:当您构建配方时,它们的内容被复制到配方本身中,并且类的内容的行为就像原始配方的一部分一样。再次强调,要点是避免不同配方之间的重复:常见行为被转移到bbclass类中。包含文件与类之间的主要区别在于位置:包含文件通常包含在与配方本身相同的文件夹中 - 您可以使用相对路径引用它。类更加全局化:它们位于层的类文件夹中(尽管您可以配置它们),并且它们可以由您正在使用的任何配方继承,甚至可以从不同的层继承(例如,考虑 cmake 或 autotools 类) 。包含文件更本地化,你必须知道包含文件在哪里,如果你想使用不同层的包含文件,你只是自找麻烦。
关于补丁:.patch您添加到SRC_URI变量的任何具有扩展名的文件都将在获取并解压所有源后应用。添加这些文件的方式/位置并不重要,它可以在原始文件中.bb,.bbappend甚至.inc在.bbclass文件中。重点是SRC_URI变量。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |