2016-09-28 29 views
0

我有2個應用程序,都使用相同的庫,但庫應該建立一個標誌啓用一個和其他禁用。這是一個靜態庫,所以在運行時不會在運行時發生衝突。但圖書館是分開的,即應用程序是分開構建的,而圖書館是分開的。在每個配置中,庫都將使用不同的名稱構建,並由makefile保存。這可以手動完成。但現在我需要將它添加到Yocto。 在yocto中,我如何在不同的配置中建立同一個庫2次?如何在Yocto中多次創建同一個庫?

+0

這個魔法標誌應該如何傳遞?環境變量? 'EXTRA_OEMAKE'? 'EXTRA_OECONF'? –

+0

環境變量 – Griffin

回答

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 
+0

這就是我一直在尋找的。有效 – Griffin

0

如果不同的配置確實產生不同的安裝文件,那麼你就沒有問題,增加了兩個獨立的食譜,只是碰巧有相同的SRC_URI

+0

問題是我只能訪問.bbappend文件。爲此,我們需要有.bb文件 – Griffin

+0

以及什麼阻止您添加另一個.bb文件? – jku

+0

它來自另一個bb層。所以我不允許觸摸這些文件 – Griffin

0

好了,你不能,不能沒有兩個配方。

您的兩個應用程序不能以任何方式影響庫的使用方式。因此,你的選擇(只要這兩個兩個應用程序應該可用於在同一臺機器/發行版組合)基本上是:

  1. 創建第二配方(在這種情況下,有可能在層中,雖然優選在上游層)。如果您正在複製的配方使用.inc以及主要包含該文件的小型.bb,則您可以輕鬆完成相同的操作。否則,你的選擇是要麼複製的配方和修改,或有新的配方

    require <PATH_FROM COREBASE-TO-THE-UPSTREAM-RECIPE>/upstream-recipe.bb 
    
  2. 如果可能的話,修改上游配方(最好使用.bbappend),同時建立你需要兩個版本。