我知道要构建这样的文件,我应该将源文件放在/ jni /文件夹中。
但是,如何在不同的文件夹中建立单独的文件。

例如,我的项目结构:

/jni/Android.mk
/jni/submodule1/Android.mk
/jni/submodule1/sub1.c
/jni/submodule2/Android.mk
/jni/submodule2/sub2.c


我试图在顶级的Android.mk中编写此代码:

$(LOCAL_PATH) :=$(call all-makefiles-under)


然后在子模块的Android.mk中写入make信息

错误是:

ndk-build
make: *** No rule to make target `/home/../workspace/jni/sub.c', needed b
y `/home/../workspace/obj/local/armeabi/objs/submodule/sub.o'.  Stop.


有人可以给我解决方案吗?谢谢!

更新1:
子模块中的Android.mk代码:

 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)

 LOCAL_SRC_FILES := sub.c

 LOCAL_C_INCLUDES := $(LOCAL_PATH)

 LOCAL_MODULE := sub
 LOCAL_LDLIBS := -ldl -llog
 LOCAL_STATIC_LIBRARIES := libc

 LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
 LOCAL_MODULE_TAGS := debug
 include $(BUILD_EXECUTABLE)


解决了:

我应该在根目录中使用ndk-build,而不要在jni目录中使用。谢谢大家!

最佳答案

您应该尝试使用include $(call all-subdir-makefiles)而不是主$(LOCAL_PATH) :=$(call all-makefiles-under)中的Android.mk,并在jni文件夹下创建文件夹,其中包含单独的c文件和Android.mk文件

10-07 19:40
查看更多