2010-06-10 4 views
1

Comment puis-je compiler des bibliothèques tierces avec le NDK android? Je compile un wrapper qui implémente les fonctions JNI en tant que lib partagé, qui dépend d'une autre librairie tierce partie (HTK). Je ne sais pas comment configurer le makefile. Ce qui suit ne fonctionne pas:Comment créer des bibliothèques tierces avec 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) 

Le second fichier makefile devrait alors générer une bibliothèque statique à laquelle ma bibliothèque partagée est liée. Comment puis-je inclure correctement ce sous-fichier makefile? Est-ce la bonne façon de le faire? Et en bonus: Y at-il des caractères génériques pour la variable LOCAL_SRC_FILES pour prendre tous les fichiers se terminant par .c par exemple.

Merci!

Répondre

10

J'ai trouvé une solution:

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) 

L'appel de la fonction CLEAR_VARS avant d'appeler la fonction était makefiles-subdir pas exactement élégant;)

+0

cela a fonctionné comme un charme même si ce n'est pas si élégant :) –

0

Dans le documentation.html dans le dossier Android NDK,

un coup d'oeil à la fonction macro "my-dir"

Renvoie le chemin du dernier inclus Makefile, qui correspond généralement au répertoire actuel de Android.mk. Ceci est utile pour définir local_path à le début de votre Android.mk comme avec:

LOCAL_PATH := $(call my-dir) 

et la fonction macro "tout-makefiles" subdir

retourne une liste d'Android. mk situé dans tous les sous-répertoires du chemin actuel «mon-dir» .

Questions connexes