2016-05-24 12 views
0

私は以下のようなプロジェクト構造を持っています。私がしたいのは、SQLiteソースを使って静的ライブラリを構築することですが、何らかの理由でndk-buildを実行すると、他の場所にAndroid.mkファイルを含むように、他のソースも構築されます。静的ライブラリのndk-build - なぜ他のファイルをビルドしていますか?

jni/SQLite 
jni/SQLite/Android.mk (the only .mk file that I want to build) 
jni/TT 
jni/Application.mk 
jni/Android.mk (for building everything such as SDL2) 

TTはSQLiteの、SDL2や他のソースなど、クロスプラットフォームのソースファイルの数が含まれて/仕事/ TTへのシンボリックリンクです。ここで

/work/TT 
/work/TT/SQLite 
/work/TT/SQLite/sqlite3.c 
/work/TT/SDL2 
.. 

はなぜ他のファイルが構築されている

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

TT_PATH := /work/TT 

SRC_SQLITE := $(TT_PATH)/SQLite/sqlite3.c 

LOCAL_C_INCLUDES += $(NDK_APP_PROJECT_PATH)/jni 
LOCAL_MODULE := SQLite 
LOCAL_SRC_FILES := $(SRC_SQLITE) 
include $(BUILD_STATIC_LIBRARY) 

/Android.mk

/SQLiteのJNIのですか? SQLiteだけをビルドするには何が必要ですか?私はsqlite3.cを見ることを期待私はNDKビルド(上記Android.mkの内容と同じフォルダ)

を実行 JNI/SQLiteの

:私は次のフォルダにしています。コマンドプロンプトで

コンパイルされた唯一のファイルです。しかし、いや、私は再びNDKビルドを実行する場合、私はこれを参照してください。一度すべてのファイルがコンパイルされている

...建設さSDL2プロジェクトファイルのすべてを参照してください。

MacbookPro:SQLite admin$ ndk-build 
[armeabi-v7a] Install  : libSDL2.so => libs/armeabi-v7a/libSDL2.so 
[armeabi-v7a] Install  : libmain.so => libs/armeabi-v7a/libmain.so 

をこれは明らかに、モジュールのSDL2を示しており、メインビルド..しかし、なぜですか?

ndk-build -f Android.mk 

/建て検索さ私の唯一の希望Android.mkを構築する代わりに、自動的に私のJNIフォルダを持つ..to:

はおそらく、私は使用することが出来るのですか?私は次のエラーを取得するが、一つの特定のAndroid.mkを実行しようとしているかのように、少なくともそれが見えることやる

次のように

MacbookPro:SQLite admin$ ndk-build -f Android.mk 
Android NDK: Trying to define local module 'SQLite' in Android.mk.  
Android NDK: But this module was already defined by /Work/TT/android-TT/app/src/main/jni/SQLite/Android.mk.  
/Android/android-ndk-r9d/build/core/build-module.mk:34: *** Android NDK: Aborting. . Stop. 

私Application.mkがあるが、これではありません

# Uncomment this if you're using STL in your project 
# See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information 
APP_STL := gnustl_static 
APP_PLATFORM := android-14 
APP_ABI := armeabi-v7a 

UPDATE::私はNDK-ビルドを実行SQLiteのフォルダに存在し、これは、JNI/Application.mkである私が試した:

ndk-build -d -f Android.mk 

..そして、デバッグ出力は、SDL2/Android.mkと他の.mkファイルがまだ呼び出されていることを示しています。この再帰的な動作を止めて、現在のフォルダにAndroid.mkしか作成しないようにするにはどうすればよいですか?

これは私が見デバッグ出力の抜粋です:

Reading makefile `/Work/TT/android-TT/app/src/main/jni/SDL/Android.mk' (search path) (no ~ expansion)... 
Reading makefile `/Work/TT/android-TT/app/src/main/obj/local/armeabi-v7a/objs/main/SQLite/sqlite3.o.d' (search path) (don't care) (no ~ expansion)... 
+1

あなたのapplication.mkは何ですか? –

+0

引数をndk-buildに渡さないとアンドロイドプロジェクトを囲み、 'jni'ディレクトリに直接あるmkファイルを使用します。 –

+0

@RobertWang要求通りにApplication.mkを添付しました。 – SparkyNZ

答えて

2

私の問題に対する答えがこれを行うことです。

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk 

これは、現在のフォルダAndroid.mkを構築します必須。

関連する問題