我有两个应用程序,它们都使用相同的库,但是应该构建库,在一个中启用一个标志,在另一个中禁用。这是一个静态库,因此在运行时不会在运行时发生冲突。但是库是独立的,即应用程序是单独构建的,并且库是独立的。在每个配置中,库将使用不同的名称构建,由makefile处理。这可以手动完成。但现在我需要将它添加到Yocto。 在yocto中,如何在单独的配置中构建相同的库2次?
答案 0 :(得分:1)
如果您仅限于.bbappend
并且您不想复制食谱,则可以添加一些额外的tasks。在这些附加任务中(在常规安装之后),您可以再次进行配置/编译/安装,但可以使用任何其他操作/变量覆盖或其他任何操作。像这样:
do_special_configure() {
oe_runmake clean
export MAGIC_VARIABLE="magic value"
do_configure
}
do_special_compile() {
export MAGIC_VARIABLE="magic value"
do_compile
}
fakeroot do_special_install() {
export MAGIC_VARIABLE="magic value"
do_install
}
do_special_configure[dirs] = "${B}"
do_special_compile[dirs] = "${B}"
do_special_install[dirs] = "${B}"
addtask special_configure after do_install before do_special_compile
addtask special_compile after do_special_configure before do_special_install
addtask special_install after do_special_compile before do_package do_populate_sysroot
答案 1 :(得分:0)
如果不同的配置确实产生了不同的已安装文件,那么添加两个恰好具有相同SRC_URI的单独配方就没有问题
答案 2 :(得分:0)
嗯,你不能,不能没有两个食谱。
您的两个应用程序,不能以任何方式影响库的使用方式。因此,您的选择(只要这两个应用程序应该可用于同一台机器/发行版组合)基本上是:
创建第二个配方(在这种情况下,可能在您的图层中,但最好在上游图层中)。如果您正在复制的配方在.inc
和一个小.bb
中使用,主要包含该文件,您可以轻松地执行相同操作。否则,您可以选择复制配方并进行修改,或者获取新配方
require <PATH_FROM COREBASE-TO-THE-UPSTREAM-RECIPE>/upstream-recipe.bb
如果可能,修改上游配方(最好使用.bbappend
)以同时构建您需要的两个版本。