2012-03-16 6 views
2

私はネイティブC/C++でOpenGLベースのアプリケーションを作成しています。NDKを使用してリンクされた(コピーされていない)ファイルをコンパイルする

ネイティブファイルを単一の場所に配置し、プロジェクトにのみリンクしたい(XCode/Eclipseで編集したときに、もう1つのプロジェクトにはすでに更新されたファイルがあります)。しかし、実際にはJNIフォルダにないファイルをビルドするためにndk-buildを入手する方法はわかりません。シンボリックリンク(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. 

任意のアイデアを得続けますか?

答えて

0

私はクロスプラットフォームのコードベースで同様の問題があります。私はこれを行う方法が見つかりませんでした。

私の回避策は、自分のソースコードルートディレクトリからjniにシンボリックリンクを作成することです。したがって、jni/link/common/foo.cのようなNDKビルドシステムパスを与えることができます。

ちょうど私がWindows上でJNIフォルダの外を構築

1

...あなたは再帰的なディレクトリトラバーサルを行うツールを実行する必要がある場合は、シンボリックリンクを削除していることを確認してください。

実際のソースがリストされている
LOCAL_PATH := $(MY_WORKSPACE)/path/jni 
include $(MY_WORKSPACE)/path/jni/Src.mk 

:私のAndroid.mkは、別のフォルダ内のmakefileが含まれて

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

1つの警告がある - make相対パスで正しく動作しません。または、むしろ、現在のフォルダに相対的なパスを仮定しています。これは、ndk-buildプロセスの場合はどこでも可能です。したがって、ファイルの場所のルートを示す変数env。

一部の詳細here

関連する問題