【问题标题】:Android Ndk Error No rule to make targetAndroid Ndk错误没有规则来制作目标
【发布时间】:2015-11-06 10:45:11
【问题描述】:

我正在尝试使用 Ndk 构建 Android Cpp 项目。

当我构建应用程序时,它只生成 jni 文件夹文件

无法生成jni子文件夹文件

我收到了这个错误

make: *** 没有规则来制作目标 src/main/jni/src/main/jni/A/B/Helper.cpp', needed bybuild/intermediates/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)

【问题讨论】:

    标签: android c++ android-ndk android.mk ndk-build


    【解决方案1】:

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

    【讨论】:

    • LOCAL_C_INCLUDES 如何包含来自不同目录的头文件。
    • 例如LOCAL_C_INCLUDES += D:/projects/demo/include
    • 我可以使用这种类型的包含 LOCAL_C_INCLUDES := $(LOCAL_PATH)/A \ $(LOCAL_PATH)/A/B \ $(LOCAL_PATH)/A/C \ $(LOCAL_PATH)/A/ D
    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多