这条线是什么意思? LOCAL_EXPORT_C_INCLUDES

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

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

III。 导出预build库的标题:

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

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

包括<foo.h>

在构buildfoo-user模块时,您需要将头文件及其包含path提供给编译器。 处理这个问题的简单方法是在预build模块定义中使用导出。 例如,假设文件“foo.h”位于相对于预build模块的“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目录的path中,从而能够在其中find标题。

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

Solutions Collecting From Web of "这条线是什么意思? LOCAL_EXPORT_C_INCLUDES"

以下对r6 NDK的docs文件夹中的ANDROID-MK.html中的LOCAL_EXPORT_*variables的说明如下:

LOCAL_EXPORT_CFLAGS
定义这个variables来logging一组将会的C / C ++编译器标志
被添加到任何其他使用的模块的LOCAL_CFLAGS定义中
这一个与LOCAL_STATIC_LIBRARIES或LOCAL_SHARED_LIBRARIES。

例如,用下面的定义来考虑模块'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) 

然后,标志'-DFOO = 1 -DBAR = 2'将被传递给编译器
build筑吧

导出的标志预先添加到您的模块的LOCAL_CFLAGS,以便您可以
轻松地覆盖他们。 它们也是传递性的:如果“动物园”依赖于
'bar'依赖于'foo',那么'zoo'也会inheritance所有的标志
由'foo'导出。

最后,在构build模块时不会使用导出的标志
出口他们。 在上面的例子中,-DFOO = 1不会被传递给
编译时build立foo / foo.c。

LOCAL_EXPORT_CPPFLAGS
与LOCAL_EXPORT_CFLAGS相同,但仅适用于C ++标志。

LOCAL_EXPORT_C_INCLUDES
与LOCAL_EXPORT_CFLAGS相同,但是包含Cpath。
如果'bar.c'想要包含头文件,这会很有用
这是由模块'foo'提供的。