我正在为android构建一个动态库(.so)文件,包含大约100个本地c文件。这些文件都包含文件c_macros.h
,但有问题的c_macros.h
会针对不同的文件组进行更改。例如,foo0.c
和bar0.c
需要在c_macros.h
目录中包含0/
,而foo1.c
和bar1.c
需要包含c_macros.h
在目录1/
。
我看到可以为整个编译定义LOCAL_C_INCLUDES
,以便所有.o文件都将使用那些本地包含。但是,是否可以为单个文件(或一组文件)指定LOCAL_C_INCLUDES
然后更改,以便为正确的文件包含正确的目录?
一种解决方案就是根据正在使用的c_macros.h
来构建不同的.so文件,但这会为每个.so文件增加大约10KB的开销,所以我想将所有内容压缩到一个大的.so文件,如果可能的话,但我需要解决LOCAL_C_INCLUDES
问题。
答案 0 :(得分:0)
您可以将它构建到单独的静态库中(您可以轻松地为每个静态库设置不同的LOCAL_C_INCLUDES
),并且只需构建一个包含静态库的.so文件。链接最终的.so文件时,这不会产生任何额外的开销(静态库中的目标文件就像普通的单个目标文件一样)。