Я пытаюсь построить проект Android Cpp с использованием Ndk.
когда я создаю приложение, оно генерирует только файлы папок jni
невозможно создать файлы подпапок jni
я получил эту ошибку
make: *** Нет правила, чтобы сделать цель src/main/jni/src/main/jni/A/B/Helper.cpp', needed by
построить / промежуточные / НДК / объект / местные / armeabi / OBJS / демо / SRC / Основной / JNI / A / B / helper.o». Стоп.
TOP_LOCAL_PATH:=$(call my-dir)
LOCAL_PATH := $(TOP_LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := a.cpp b.cpp c.cpp d.cpp
LOCAL_SRC_FILES := $(LOCAL_PATH)/A/B/Helper.cpp
LOCAL_CFLAGS += -std=c++11 -frtti -fexceptions -fpermissive
LOCAL_LDLIBS += -llog -lGLESv2 -lEGL -landroid -lOpenSLES -lGLESv1_CM -lz
LOCAL_C_INCLUDES := $(LOCAL_PATH)/A/B
include $(BUILD_SHARED_LIBRARY)
Имена файлов, которые перечислены в LOCAL_SRC_FILES
являются родственник в LOCAL_PATH
. Кроме того, вы можете определить этот список в несколько строк, но добавляя список, а не заменяя его.
Так что ваши Android.mk файл должен выглядеть примерно так:
TOP_LOCAL_PATH:=$(call my-dir)
LOCAL_PATH := $(TOP_LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := a.cpp b.cpp c.cpp d.cpp
LOCAL_SRC_FILES += A/B/Helper.cpp
LOCAL_CFLAGS += -std=c++11 -frtti -fexceptions -fpermissive
LOCAL_LDLIBS += -llog -lGLESv2 -lEGL -landroid -lOpenSLES -lGLESv1_CM -lz
LOCAL_C_INCLUDES := $(LOCAL_PATH)/A/B
include $(BUILD_SHARED_LIBRARY)
Обратите внимание, что список LOCAL_C_INCLUDES
следует использовать полные пути.
Других решений пока нет …