Android.mk根据文件更改本地C include目录

时间:2015-03-03 10:22:16

标签: c android-ndk android.mk

我正在为android构建一个动态库(.so)文件,包含大约100个本地c文件。这些文件都包含文件c_macros.h,但有问题的c_macros.h会针对不同的文件组进行更改。例如,foo0.cbar0.c需要在c_macros.h目录中包含0/,而foo1.cbar1.c需要包含c_macros.h在目录1/

我看到可以为整个编译定义LOCAL_C_INCLUDES,以便所有.o文件都将使用那些本地包含。但是,是否可以为单个文件(或一组文件)指定LOCAL_C_INCLUDES然后更改,以便为正确的文件包含正确的目录?

一种解决方案就是根据正在使用的c_macros.h来构建不同的.so文件,但这会为每个.so文件增加大约10KB的开销,所以我想将所有内容压缩到一个大的.so文件,如果可能的话,但我需要解决LOCAL_C_INCLUDES问题。

1 个答案:

答案 0 :(得分:0)

您可以将它构建到单独的静态库中(您可以轻松地为每个静态库设置不同的LOCAL_C_INCLUDES),并且只需构建一个包含静态库的.so文件。链接最终的.so文件时,这不会产生任何额外的开销(静态库中的目标文件就像普通的单个目标文件一样)。