【发布时间】:2011-07-06 10:51:41
【问题描述】:
非常简单的问题,希望得到一个非常简单的答案。我一直在查看很多人的 android.mk 文件并注意到了这一行。我的 NDK 文档中没有关于它的文档(至少 find . -name "*.txt" | xargs grep "LOCAL_EXPORT_C_INCLUDES" 什么也没想到)。这是我读过的唯一一份文档……让我大吃一惊……
第 2 部分:我是否正确地假设我需要这一行才能将预构建的共享库与另一个模块一起使用?谢谢你们(和女孩)
三。导出预建库的标头:
上面的示例被称为“幼稚”,因为在实践中, foo-user.c 将依赖于通常的特定声明 在与预构建库一起分发的头文件中找到(例如“foo.h”)。
换句话说,foo-user.c 将会有这样一行:
包括
并且您需要向编译器提供标头及其包含路径 在构建 foo-user 模块时。 一种简单的处理方法是在预建模块中使用导出 定义。例如,假设文件“foo.h”位于 相对于预建模块的'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 前面加上预构建的包含目录的路径,因此将 能够在其中找到标题。
网址:http://www.srombauts.fr/android-ndk-r5b/docs/PREBUILTS.html
【问题讨论】:
-
是的。你的假设是正确的。确保您的
LOCAL_EXPORT_C_INCLUDES指向 .so 文件的包含目录。欢迎你,我!
标签: android android-ndk