Android 这条线是什么意思?本地出口包括

Android 这条线是什么意思?本地出口包括,android,android-ndk,Android,Android Ndk,非常简单的问题,希望得到一个非常简单的答案。我一直在看很多人的android.mk文件,并注意到这一行。我在NDK的文档中没有关于它的文档(至少find.-name“*.txt”| xargs grep“LOCAL_EXPORT_C_INCLUDES”没有找到任何内容)。这是我读过的唯一一份关于它的文件…让我头晕目眩 第2部分:我的假设正确吗?我将需要这一行来与另一个模块一起使用预构建的共享库?谢谢大家 三、 导出预构建库的标题: 上面的例子被称为“幼稚”,因为在实践中 foo user.c将依

非常简单的问题,希望得到一个非常简单的答案。我一直在看很多人的android.mk文件,并注意到这一行。我在NDK的文档中没有关于它的文档(至少
find.-name“*.txt”| xargs grep“LOCAL_EXPORT_C_INCLUDES”
没有找到任何内容)。这是我读过的唯一一份关于它的文件…让我头晕目眩

第2部分:我的假设正确吗?我将需要这一行来与另一个模块一起使用预构建的共享库?谢谢大家

三、 导出预构建库的标题: 上面的例子被称为“幼稚”,因为在实践中 foo user.c将依赖于通常使用的特定声明 在与预构建库一起分发的头文件中找到(例如“foo.h”)

换句话说,foo user.c将有一行如下所示:

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

`包括$(清除变量)

本地_模块:=foo预构建

本地_SRC_文件:=libfoo.so

本地导出包含:=$(本地路径)/包含

包括$(预建共享库)`

本地_EXPORT_C_在此处包含定义,以确保 取决于预构建的一个将自动包含其本地_C_ 以预构建的include目录的路径作为前缀,因此 能够找到其中的标题


URL:

r6 NDK文档文件夹中的
本地导出变量的以下说明:

本地\u出口\u CFLAGS
定义此变量以记录一组C/C++编译器标志,这些标志将
添加到使用
这一个包含本地\u静态\u库或本地\u共享\u库

例如,考虑以下定义的模块“FoO”:

   include $(CLEAR_VARS)
   LOCAL_MODULE := foo
   LOCAL_SRC_FILES := foo/foo.c
   LOCAL_EXPORT_CFLAGS := -DFOO=1
   include $(BUILD_STATIC_LIBRARY)
以及另一个名为“bar”的模块,它依赖于以下模块:

   include $(CLEAR_VARS)
   LOCAL_MODULE := bar
   LOCAL_SRC_FILES := bar.c
   LOCAL_CFLAGS := -DBAR=2
   LOCAL_STATIC_LIBRARIES := foo
   include $(BUILD_SHARED_LIBRARY)
然后,当
建筑钢筋混凝土

导出的标志在模块的本地标志前面,因此您可以
轻松地覆盖它们。它们也是可传递的:如果“zoo”依赖于
依赖于“foo”的“bar”,则“zoo”也将继承所有标志
由“foo”导出

最后,在构建
出口它们。在上面的示例中,-DFOO=1将不会传递给
编译时生成foo/foo.c

本地\u导出\u CPPFLAGS
与LoalAlxExpPtCFLAGS相同,但仅用于C++标志。p> 本地出口包括
与本地导出相同,但对于C包含路径。
如果“bar.c”想要包含标题,这可能很有用
由模块“foo”提供的


对你的假设是正确的。确保您的
LOCAL\u EXPORT\u C\u INCLUDES
指向.so文件的INCLUDES目录。不客气,我!真遗憾,它没有像广告宣传的那样起作用。在我的例子中,在我导入的库中,我有“LOCAL\u EXPORT\u C\u INCLUDES”作为其标题。但是对于我正在构建的库,我仍然必须指定与之前在“LOCAL_EXPORT_C_INCLUDES”中指定的头相同的头,因为它们不包含。。。这个修改过的构建系统绝对糟糕。@jww这是用于使用AOSP源代码树进行构建的吗?然后您需要
LOCAL\u EXPORT\u INCLUDE\u DIRS
而不是
LOCAL\u EXPORT\u INCLUDE
。。。