web-dev-qa-db-fra.com

Android NDK: Aucune règle à faire cible

J'essaie de créer une application Android simple à l'aide de NDK . Voici le contenu de mon Android.mk

LOCAL_PATH := $(call my-dir)  

include $(CLEAR_VARS)  

LOCAL_LDLIBS := -llog  

LOCAL_MODULE    := myNDK
LOCAL_SRC_FILES := native.c

include $(BUILD_SHARED_LIBRARY)

Et quand je lance ndk-build, je reçois:

make: * Aucune règle à rendre cible '/native.c', needed by '/ Users/ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o' . Arrêtez.

Le problème est donc évidemment que make cherche dans les fichiers source du répertoire racine et si je copie native.c dans mon dossier racine, tout fonctionnera parfaitement.

La question est: que dois-je spécifier dans mon Android.mk pour définir LOCAL_PATH dans mon dossier jni actif.

47
Ivan

OK, j'ai résolu mon problème et la raison en était très étrange: Le problème est dans la première ligne 

'LOCAL_PATH: = $ (call my-dir) ____'

Il y avait finalement plusieurs espaces (je les ai remplacés par '_'). Si vous les supprimez, tout fonctionne parfaitement.

J'espère que ça aide quelqu'un d'autre.

86
Ivan

Sous Mac OS X utilisant Android-ndk-r9 64 bits, supprimez les espaces blancs du chemin NDK. Cela a corrigé le Aucune règle pour faire de la cible erreur pour moi

Pas exactement une réponse pour OP, mais je suppose que cela peut éviter aux autres de perdre leur temps.

1
Maragues

Un autre problème que j'ai trouvé qui provoque cette erreur est que le 

LOCAL_SRC_FILES := native.c

et 

LOCAL_MODULE    := native

utilisez le même nom. Je ne suis pas sûr de savoir pourquoi cela provoque une erreur, car le code devrait être généré à différents emplacements en tant que native.o, native.od et native. Mais apparemment, c'est le cas.

Je l'ai découvert en essayant de compiler hello.c to hello. Une fois que j'ai changé hello.c en main.c, tout a été compilé correctement.

1
E Net Arch

S'il y a une erreur de syntaxe dans le fichier Android.mk, il n'y aura pas de règle pour faire une erreur de cible. 

J'ai eu le même problème.

0
charlotte