我正在尝试围绕C代码创建一个Android Studio包装器,并且遇到了NDK的问题。因为C代码来自第三方项目,所以我试图不移动代码位置并将项目放在存储库的子目录中,因此不得使用对NDK及其自动生成的make文件的内部调用。 NDK调用正常,但我收到以下错误:
make.exe: *** No rule to make target `C:/some_relative_path/jni/../../../../core.c', needed by `C:/some_relative_path/obj/local/armeabi/objs/my_module/C_/some_relative_path/jni/__/__/__/__/core.o'. Stop.
正如您所看到的,对象路径已被破坏,:
和..
已变为下划线。
我必须在项目中添加一个jni文件夹,并在其中放置Android.mk
和Application.mk
文件,以满足NDK Gradle插件的路径追加。因此,jni
文件夹中没有源文件。由于我在google上发现了几个需要多个源文件的链接,因此我在jni
目录中添加了两个虚拟源文件。
除其他外,我的Android.mk
文件包含以下内容:
LOCAL_SRC_FILES := \
$(LOCAL_PATH)/NDKBug1.c \
$(LOCAL_PATH)/NDKBug2.c \
$(LOCAL_PATH)/../../../../core.c \
我想看看是否有人可以直接帮我解决这个路径问题,或者建议另外一种设置方法。
答案 0 :(得分:0)
LOCAL_SRC_FILES
中的文件名应该是相对于本地目录的,因此您需要删除$(LOCAL_PATH)/
前缀 - 然后才能正常工作。
我还没有听说过需要在本地目录中拥有源文件的bug,所以我认为你可以摆脱它们。