如何使用android NDK编译第三方库?我正在编译一个包装器,它将JNI函数实现为共享库,这取决于另一个第三方库(HTK)。我不知道如何设置makefile。以下不起作用:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include HTKLib/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := gaitfuncs
LOCAL_SRC_FILES := gaitfuncs.c
%LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
然后第二个makefile应该构建一个我的共享lib链接到的静态库。如何正确包含这个subdir makefile?这是正确的做法吗?作为奖励:例如,是否有LOCAL_SRC_FILES变量的通配符以所有以.c结尾的文件为止。
谢谢!
答案 0 :(得分:10)
我找到了解决方案:
JNIPATH := $(call my-dir)
LOCAL_PATH := $(JNIPATH)
include $(call all-subdir-makefiles)
LOCAL_PATH := $(JNIPATH)
include $(CLEAR_VARS)
LOCAL_MODULE := gaitfuncs
LOCAL_SRC_FILES := gaitfuncs.c
LOCAL_STATIC_LIBRARIES := htk
include $(BUILD_SHARED_LIBRARY)
在调用subdir-makefiles函数之前调用CLEAR_VARS函数并不是很优雅;)
答案 1 :(得分:0)
在Android NDK文件夹的 documentation.html 中
看一下宏功能“my-dir”
返回最后包含 Makefile的路径,通常是 当前Android.mk的目录。这对于定义LOCAL_PATH非常有用 Android.mk的开头如下:
LOCAL_PATH := $(call my-dir)
和宏功能“all-subdir-makefiles”
返回位于所有子目录中的Android.mk列表 目前的“我的主意”路径。