我在将一些 make 文件重构为可管理的模块时遇到问题。
以下是我尝试完成的结构:
- jni/安卓.mk
- jni/应用程序.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
Note: I started from the Vuforia SDK ImageTargets example and added some other libraries like reading OBJ, PNG and ZIP files. I've also included the freetype and ftgles library.
我从根 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 .
编译器给出如下错误:
Install : libFTGLES.so => libs/armeabi/libFTGLES.so Compile++ arm : ImageTargets <= ImageTargets.cpp jni/imagetargets/ImageTargets.cpp:44:24: fatal error: libpng/png.h: No such file or directory compilation terminated. make: * [obj/local/armeabi/objs/ImageTargets/ImageTargets.o] Error 1
知道如何使 libpng(和其他模块) header 可用于 imagetargets 模块吗?
最佳答案
我认为使用 LOCAL_EXPORT_C_INCLUDES
在每个子 makefile 中指定包含的路径将确保在构建最终模块时 header 可用。
在 NDK 文档(在您的 NDK 目录中可用)中检查此标志的文档,但据我了解,它会完全按照您的意愿执行:自动将每个子模块的包含路径导出到最终模块。
关于android - 将 Android NDK make 文件重构为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16731442/