将Android NDK make文件重构为模块
Refactor Android NDK make files into modules
我在将一些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调用其他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
你可以看到所有的make文件在github上的一个gist
编译器给出如下错误:
安装libFTGLES。so => libs/armeabi/libFTGLES。所以编译+ +arm: ImageTargets <= ImageTargets.cppjni/imagetarges/imagetarges .cpp:44:24: fatal error: libpng/png.h: No .这样的文件或目录编译终止。: * (obj/地方/armeabi/obj/ImageTargets/ImageTargets。0]错误1
任何想法如何使libpng(和其他模块)头可用于imagetarts模块?
我认为使用LOCAL_EXPORT_C_INCLUDES
在每个子makefile中指定包含的路径将确保在构建最终模块时头文件可用。
在NDK文档(在您的NDK目录中可用)中检查此标志的文档,但据我所知,它将做您想做的事情:自动导出每个子模块的包含路径到最终模块。
相关文章:
- 尝试导入pybind-opencv模块时出现libgtk错误
- 如何重构类层次结构以避免菱形问题
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 内联如何影响模块接口中的成员函数
- C++返回 Numpy 数组的 Python 扩展模块
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 如何从线程中的不同模块调用函数?
- 如何使用 soong 命名空间来有条件地编译模块
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- CMake - 模块 + 库混淆
- 特征 LLT 模块给出不正确的结果?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 python 模块中导入子模块时PyImport_Import失败
- 将 PCL 链接到 Cython C++ 模块
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 电源功能模块化操作
- 如何告诉本机节点模块所需的dll存储在哪里?
- 将Android NDK make文件重构为模块