Android NDK: нет правила, чтобы сделать цель
Я пытаюсь создать простое приложение для Android с помощью NDK.
Вот содержание моего 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)
И когда я запускаю ndk-build, я получаю:
make: * Нет правила для создания цели '/native.c', needed by
'/Users/иван/Документы/рабочее пространство/TestNDK/объект/локальные/armeabi/OBJS/myNDK/native.o. Стоп.
Итак, проблема в том, что make ищет исходные файлы в корневом каталоге и, если я копирую native.c в свою корневую папку, все работает отлично.
Вопрос: что я должен указать в своем Android.mk, чтобы установить LOCAL_PATH в мою рабочую папку jni.
Ответы
Ответ 1
Хорошо, я решил свою проблему, и причина была очень странной:
проблема в первой строке
'LOCAL_PATH: = $(вызов my-dir) ____'
В конце было несколько пробелов (я заменил их на "_" ). Если вы их удалите, все будет хорошо.
Надеюсь, что это поможет кому-то другому.
Ответ 2
В Mac OS X с использованием 64-битного android-ndk-r9 удалите пробелы из пути NDK. Это зафиксировало правило No для создания целевой ошибки для меня
Не совсем ответ для OP, но я думаю, это может спасти других от траты времени.
Ответ 3
Другая проблема, которую я обнаружил, вызывает эту ошибку:
LOCAL_SRC_FILES := native.c
и
LOCAL_MODULE := native
используйте одно и то же имя. Я не уверен, почему это вызывает ошибку, поскольку код должен быть сгенерирован в разных местах как native.o, native.od и native. Но, по-видимому, это так.
Я нашел это, пытаясь скомпилировать hello.c для приветствия. Как только я изменил hello.c на main.c, все скомпилировано должным образом.
Ответ 4
Если в файле Android.mk есть какая-либо синтаксическая ошибка, никакое правило для создания целевой ошибки не будет.
У меня была та же проблема.