2015-03-03 84 views
0

我正在爲大約100個本地c文件構建一個android動態庫(.so)文件。這些文件都包含文件c_macros.h,但所涉及的c_macros.h會針對不同的文件組進行更改。例如,foo0.cbar0.c需要在目錄0/中包括c_macros.h,而foo1.cbar1.c需要在目錄1/中包括c_macros.hAndroid.mk根據文件更改本地C包含目錄

我看到,可以定義LOCAL_C_INCLUDES作爲編譯的全部內容,以便所有.o文件都將使用這些本地包含。但是,LOCAL_C_INCLUDES是否可以爲單個文件(或一組文件)指定,然後進行更改以便正確的目錄可以包含在正確的文件中?

一個解決方案是根據使用哪個c_macros.h構建不同的.so文件,但是這爲每個.so文件增加了大約10KB的開銷,所以我想將所有東西壓縮到一個大的.so文件中如果可能的話,但我需要整理LOCAL_C_INCLUDES問題。

回答

0

您可以將其構建到單獨的靜態庫(您可以輕鬆地爲每個靜態庫設置不同的LOCAL_C_INCLUDES),並構建一個包含靜態庫的.so文件。鏈接最終的.so文件時,不會產生額外的開銷(來自靜態庫的對象文件的行爲與正常的單個對象文件一樣)。