Подтвердить что ты не робот

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.

4b9b3361

Ответ 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 есть какая-либо синтаксическая ошибка, никакое правило для создания целевой ошибки не будет.

У меня была та же проблема.