使用NDK编译链接(未复制)文件

时间:2012-03-16 17:52:20

标签: android opengl-es android-ndk

我正在构建一个基于OpenGL的应用程序 - 用本机C / C ++编写。

我希望将我的原生文件放在一个位置,并且只链接到项目(所以当我在XCode / Eclipse中编辑它们时,另一个项目已经有了更新的文件)。但是,我无法弄清楚如何让ndk-build构建实际上不在JNI文件夹中的文件。符号链接(在OSX中)没有成功。

我一直在

make: *** No rule to make target `/Developer/SDKs/android-ndk-r7b/build/core/myfile.cpp', needed by `obj/local/armeabi/objs/glHelloArrow/myfile.o'.  Stop.

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我在Windows上的JNI文件夹之外构建。我的Android.mk在不同的文件夹中包含一个makefile:

LOCAL_PATH := $(MY_WORKSPACE)/path/jni
include  $(MY_WORKSPACE)/path/jni/Src.mk

列出实际来源:

LOCAL_SRC_FILES := \
    a.cpp \
    b.cpp \
    etc.

有一点需要注意 - make不适用于相对路径。或者更确切地说,它确实如此,但是假设路径是相对于当前文件夹的,在ndk-build进程的情况下可以到处都是。因此env变量表示文件位置的根。

一些细节here

答案 1 :(得分:0)

我遇到了跨平台代码库的类似问题。我找不到任何办法。

我的解决方法是从源代码根目录创建一个符号链接到jni,这样我就可以给出像jni/link/common/foo.c这样的NDK构建系统路径。

如果您需要运行执行递归目录遍历的工具,请确保删除符号链接...