2010-06-10 96 views
1

如何使用android NDK编译第三方库?我正在编译一个将JNI函数作为共享库的包装器,它依赖于另一个第三方库(HTK)。我不知道如何设置makefile。以下不起作用:如何使用Android NDK构建第三方库

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) 

第二个生成文件然后应该建立一个静态库,我的共享库链接到。我怎样才能正确地包含这个subdir makefile?这是做这件事的正确方法吗?作为奖励:是否有LOCAL_SRC_FILES变量的通配符以.c结尾的所有文件为例。

谢谢!

回答

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) 

调用子目录,生成文件的功能不完全是优雅的前调用的CLEAR_VARS功能;)

+0

它的工作就像一个魅力,即使它不是那么优雅:) – 2015-04-02 13:29:24

0

documentation.html上中的Android NDK文件夹,

看看微距功能 “我的-DIR”

返回最后包含的的路径 Makefile,通常是当前Android.mk目录的 。这是在 定义LOCAL_PATH你的Android.mk开始与有用:

LOCAL_PATH := $(call my-dir) 

和宏功能的“全子目录,生成文件”

返回的Android清单。 mk位于 当前'my-dir'路径的所有子目录中。