【问题标题】:Android.mk change local C include directory depending on fileAndroid.mk 根据文件更改本地 C 包含目录
【发布时间】:2015-03-03 10:22:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: c android-ndk android.mk


    【解决方案1】:

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

    【讨论】: