2017-02-09 6 views
0

私はjniを使ってビルドされた複数の静的ライブラリを持っています。コンパイル設定を共有したり、他の従属プロジェクトのファイルをインクルードするために、他のmkファイルなどを含むスキームがあります。cygwinのndk_build.cmdはインクルードされたmkファイルを認識しません

私はMacで正常にセットアップしてビルドしています。しかし、私は私が問題に実行しているcygwinの下のウィンドウで同じことをしようとしたとき...ここ

は私のJNI/Android.mkファイル..です

LOCAL_PATH := $(call my-dir) 
INJ_PROJECT_PATH := $(PWD) 
include $(INJ_PROJECT_PATH)/jni/Project.mk 

私が見ている問題ndk-buildがProject.mkファイルについて不平を言っているということです。ここで私は/cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mkが存在しないことが確認されている、と私は、所有者とそれだ..私は見ているものを

[email protected] /cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core 
$ ndk-build.cmd NDK_APP_OUT=../../build/Android/Engine/release 
jni/Android.mk:5: /cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk: No such file or directory 
jni/Android.mk:5: /cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk: No such file or directory 
jni/Android.mk:5: /cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk: No such file or directory 
jni/Android.mk:5: /cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk: No such file or directory 
C:/projects/Android/sdk/ndk-bundle/build//../build/core/build-all.mk:89: Android NDK: WARNING: There are no modules to build in this project! 
make: *** No rule to make target `/cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk'. Stop. 

ですユーザー/グループ/その他に対して読み取りアクセス権を持っています。

この同じセットアップは、Macでも絶対にうまく動作します。私はちょうどポータブル開発環境を持って見ている。

私はここで何が欠けていますか?

答えて

0

私は、ndk-build.cmdがWindowsシェルバッチスクリプト(DOH)であることを忘れていたと思います。 答えはcygwinで快適に動作するshスクリプトである/ build/ndk-buildを呼び出すことができたということでした。

+0

ndk-build.cmdはCygwinでも動作します。私はシェルスクリプトバージョンの削除を実際に計画していました。なぜなら、シェルバージョンのcygwinサポートはすべて貧弱ですが、cygwinのバッチファイルはうまくいきました。私は、あなたが '$(LOCAL_PATH)'の代わりに '$(PWD)'を使用したという問題があると思います。 –

+0

私は$(PWD)をした理由は、相対パスではなく完全なパスを取得することでした。私はシステムを過ぎてしまったかもしれませんが、私のすべてのライブラリが共通の設定を共有できるようにし、Source.mk、AdditionalIncludes.mk、Target.mkなどのファイルを使ってカスタマイズする機能を提供します。$(PWD)以前は$(shell pwd)で、以前はpwdバッチスクリプトを使っていましたが、Windowsでコンパイルする他の問題に遭遇し、代わりにcygwinを試してみることにしました。それにもかかわらず、それは今働いている。今そこにあるshスクリプトを削除しないでください。私はそれを正常に使用しています:) – Shammi

+0

一般に、あなたがすべてのコードに適用したいオプションがある場合、それらはApplication.mkに入るべきです。つまり、 'APP_CFLAGS:= -DMY_DEFINE = foo'となります。あなたの状況に合わせたテストケースを用意して、ndk-build.cmdを使ってcygwinを使って動作させるかどうかを調べる必要があります。 –

0

おそらくPWDの代わりにLOCAL_PATHを使用する必要があります。私は実際にPWDがどのように設定されているのかはわかりませんが、私は実際にはLOCAL_PATHを制御しており、cygwinの正しい方法で設定されていることを確認できます。

0

APP_BUILD_SCRIPTであると定義すると、何を含めるのではなく、

ex。

APP_BUILD_SCRIPT:= JNI/Android.mk

また同上$(シェルの$ PWD)の代わりに上記動作しない場合は、通常ならば私のためのシェルコマンドを解釈することはありませんNDK $(PWD)のを試してみてください私はかっこ内のシェルを使用しません。

+0

私は$(shell pwd)ソリューションを早く使っていました。しかし、シェルの環境差に起因する他の問題に遭遇し、代わりにcygwinを試してみることにしました。それにもかかわらず、ビルドフォルダの下でndk-buildスクリプトを使用しているので、今は動作しているようです。 – Shammi

関連する問題