2015-11-06 52 views
0

我尝试使用Ndk构建Android Cpp项目。Android Ndk错误无法制定目标

当我建立应用程序的唯一生成JNI夹中的文件

不能产生JNI子文件夹中的文件

我得到这个错误

化妆:***没有规则,使目标src/main/jni/src/main/jni/A/B/Helper.cpp', needed by编译/中间体/ndk/obj/local/armeabi/objs/demo/src/main/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) 

回答

0

了在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应该使用完整路径。

+0

LOCAL_C_INCLUDES如何包含来自不同目录的头文件。 –

+0

例如LOCAL_C_INCLUDES + = D:/ projects/demo/include' –

+0

我可以使用这种类型的包括LOCAL_C_INCLUDES:= $(LOCAL_PATH)/ A \ $(LOCAL_PATH)/ A/B \ $(LOCAL_PATH)/ A/C \ $(LOCAL_PATH)/ A/D –