[Android] 这条线是什么意思? LOCAL_EXPORT_C_INCLUDES


Answers

Question

非常简单的问题,希望得到一个非常简单的答案。 我一直在看很多人的android.mk文件,并注意到这一行。 在我的NDK的文档中,我没有任何文档(至少find . -name "*.txt" | xargs grep "LOCAL_EXPORT_C_INCLUDES"没有任何结果)。 这是我读过的唯一的文档...进入我的头...

第2部分:我的假设是否正确,我需要这一行来使用预构建的共享库与另一个模块? 感谢球员(和加尔斯)

III。 导出预建库的标题:

上面的例子被称为“天真”,因为在实践中,foo-user.c中的代码将依赖通常在与预先构建的库(例如“foo.h”)分发的头文件中找到的特定声明。

换句话说,foo-user.c将会有一行:

包括<foo.h>

在构建foo-user模块时,您需要将头文件及其包含路径提供给编译器。 处理这个问题的简单方法是在预建模块定义中使用导出。 例如,假设文件“foo.h”位于相对于预建模块的“include”目录下,我们可以这样写:

include $(CLEAR_VARS)

LOCAL_MODULE:= foo-prebuilt

LOCAL_SRC_FILES:= libfoo.so

LOCAL_EXPORT_C_INCLUDES:= $(LOCAL_PATH)/ include

包括$(PREBUILT_SHARED_LIBRARY)`

这里的LOCAL_EXPORT_C_INCLUDES定义可以确保任何依赖于预编译模块的模块都将自动地将LOCAL_C_INCLUDES预先包含到预编译器的include目录的路径中,从而能够在其中找到标题。

网址: http : //www.srombauts.fr/android-ndk-r5b/docs/PREBUILTS.html