2010-06-10 95 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'路徑的所有子目錄中。