重构Android NDK将文件转换为模块

时间:2013-05-24 09:15:09

标签: android c++ c android-ndk makefile

我无法将一些make文件重构为可管理的模块。

以下是我尝试完成的结构:

  • JNI / Android.mk
  • JNI / Application.mk
  • JNI / libobj / Android.mk
  • JNI /的libpng / Android.mk
  • JNI / libzip / Android.mk
  • JNI / freetype的/ Android.mk
  • JNI / ftgles / Android.mk
  • JNI / qcar / Android.mk
  • JNI / imagetargets / Android.mk
  

注意:我从Vuforia SDK ImageTargets示例开始并添加   一些其他的库,如读取OBJ,PNG和ZIP文件。我也是   包括freetype和ftgles库。

我从根Android.mk文件中调用其他make文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS) 

include jni/libobj/Android.mk 
include jni/libpng/Android.mk
include jni/libzip/Android.mk
include jni/freetype/Android.mk
include jni/ftgles/Android.mk
include jni/qcar/Android.mk
include jni/imagetargets/Android.mk

您可以看到 all make files in a gist on github

编译器给出以下错误:

  

安装:libFTGLES.so => libs / armeabi / libFTGLES.so编译++   arm:ImageTargets< = ImageTargets.cpp   jni / imagetargets / ImageTargets.cpp:44:24:致命错误:libpng / png.h:否   此类文件或目录编译已终止。 make: *   [obj / local / armeabi / objs / ImageTargets / ImageTargets.o]错误1

知道如何为libtarget模块提供libpng(和其他模块)头文件吗?

1 个答案:

答案 0 :(得分:1)

我认为使用LOCAL_EXPORT_C_INCLUDES在每个子makefile中指定包含路径将确保在构建最终模块时标头可用。

在NDK文档中查看此标志的文档(可在NDK目录中找到),但据我所知,它将完全按照您的要求执行:自动将每个子模块的包含路径导出到最后的模块。