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.
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.
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.
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.
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.