2

如何使用 android NDK 编译第三方库?我正在编译一个将 JNI 函数实现为共享库的包装器,它依赖于另一个 3rd 方库(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 应该构建一个静态库,我的共享库链接到该库。如何正确包含此子目录 makefile?这是正确的做法吗?作为奖励: LOCAL_SRC_FILES 变量是否有通配符来获取所有以 .c 结尾的文件。

谢谢!

4

2 回答 2

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 函数并不优雅;)

于 2010-06-10T11:59:43.850 回答
0

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

看看宏函数“my-dir”

返回最后包含的 Makefile 的路径,通常是当前 Android.mk 的目录。这对于在 Android.mk 的开头定义 LOCAL_PATH 很有用,如下所示:

 LOCAL_PATH := $(call my-dir)

和宏函数“all-subdir-makefiles”

返回位于当前“my-dir”路径的所有子目录中的 Android.mk 列表。

于 2012-09-27T08:40:08.177 回答