非常简单的问题,希望得到一个非常简单的答案。我已经看了很多人的android.mk文件,并注意到了这一行。我在NDK的文档中没有任何文档(至少find . -name "*.txt" | xargs grep "LOCAL_EXPORT_C_INCLUDES"没有提供任何文档)。这是我在it...goes上读到的关于我头上唯一的文件.
第2部分:我的假设是正确的吗?我需要这一行来使用预建好的共享库和另一个模块?谢谢各位(和姑娘们)
三.导出预构建库的头文件: 上面的示例被称为'naive‘,因为在实践中,foo-user.c中的代码将依赖于通常在与预构建库一起分发的头文件(例如"foo.h")中找到的特定声明。 换句话说,foo-user.c将有一行如下: 包括< foo.h > 在构建compiler模块时,您需要为编译器提供头部及其包含路径。处理这个问题的一个简单方法是在预构建的模块定义中使用导出。例如,假设文件"foo.h“位于与预构建模块相关的'include‘目录下,我们可以编写:
include $(CLEAR\_VARS) LOCAL\_MODULE := foo-prebuilt LOCAL\_SRC\_FILES := libfoo.so LOCAL\_EXPORT\_C\_INCLUDES := $(LOCAL\_PATH)/include include $(PREBUILT\_SHARED\_LIBRARY)这里的LOCAL_EXPORT_C_INCLUDES定义确保任何依赖于预构建模块的模块将其LOCAL_C_INCLUDES与预构建的包含目录的路径自动加在一起,从而能够在其中找到头文件。
网址:http://www.srombauts.fr/android-ndk-r5b/docs/PREBUILTS.html
发布于 2011-08-30 18:28:51
以下是对ANDROID-MK.html中ANDROID-MK.html中的r6 NDK文件夹中的r6变量的解释:
LOCAL_EXPORT_CFLAGS 定义此变量以记录一组C/C++编译器标志,这些标记将 的任何其他模块的LOCAL_CFLAGS定义中 这个有LOCAL_STATIC_LIBRARIES或LOCAL_SHARED_LIBRARIES。例如,考虑具有以下定义的模块“foo”: 包括$(CLEAR_VARS) LOCAL_MODULE := foo LOCAL_SRC_FILES := foo/foo.c LOCAL_EXPORT_CFLAGS := -DFOO=1 foo $(BUILD_STATIC_LIBRARY) 还有一个模块,名为“bar”,它依赖于它:包含$(CLEAR_VARS) LOCAL_MODULE := bar LOCAL_SRC_FILES := bar.c LOCAL_CFLAGS := -DBAR=2 LOCAL_STATIC_LIBRARIES := foo包含$(BUILD_SHARED_LIBRARY) 然后,标志'-DFOO=1 -DBAR=2‘将传递给编译器 建筑酒吧c 导出的标志被附加到模块的LOCAL_CFLAGS中,这样您就可以 很容易推翻他们。它们也是传递性的:如果“动物园”取决于 “‘bar”依赖于“foo”,那么“动物园”也将继承所有的标志 由'foo‘出口。最后,在构建以下模块时不使用导出标志 出口它们。在上面的示例中,-DFOO=1不会传递给 编译foo/foo.c时。LOCAL_EXPORT_CPPFLAGS 与LOCAL_EXPORT_CFLAGS相同,但只适用于C++标志。LOCAL_EXPORT_C_INCLUDES 与LOCAL_EXPORT_CFLAGS相同,但C包含路径。 如果'bar.c‘想包含标头,这可能很有用。 由模块'foo‘提供。
https://stackoverflow.com/questions/6595208
复制相似问题