我知道要构建so文件,我应该将源文件放在/ 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 info错误是:
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: submoudle中的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目录中使用。谢谢你们所有人!
答案 0 :(得分:1)
您应该在主include $(call all-subdir-makefiles)
中尝试$(LOCAL_PATH) :=$(call all-makefiles-under)
而不是Android.mk
,并在jni文件夹下创建文件夹,其中包含单独的c文件和Android.mk
个文件
答案 1 :(得分:0)
你有没有试过像:
LOCAL_PATH := $(call my-dir)
LOCAL_SRC_FILES := /submodule1/sub1.c