私は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でも絶対にうまく動作します。私はちょうどポータブル開発環境を持って見ている。
私はここで何が欠けていますか?
ndk-build.cmdはCygwinでも動作します。私はシェルスクリプトバージョンの削除を実際に計画していました。なぜなら、シェルバージョンのcygwinサポートはすべて貧弱ですが、cygwinのバッチファイルはうまくいきました。私は、あなたが '$(LOCAL_PATH)'の代わりに '$(PWD)'を使用したという問題があると思います。 –
私は$(PWD)をした理由は、相対パスではなく完全なパスを取得することでした。私はシステムを過ぎてしまったかもしれませんが、私のすべてのライブラリが共通の設定を共有できるようにし、Source.mk、AdditionalIncludes.mk、Target.mkなどのファイルを使ってカスタマイズする機能を提供します。$(PWD)以前は$(shell pwd)で、以前はpwdバッチスクリプトを使っていましたが、Windowsでコンパイルする他の問題に遭遇し、代わりにcygwinを試してみることにしました。それにもかかわらず、それは今働いている。今そこにあるshスクリプトを削除しないでください。私はそれを正常に使用しています:) – Shammi
一般に、あなたがすべてのコードに適用したいオプションがある場合、それらはApplication.mkに入るべきです。つまり、 'APP_CFLAGS:= -DMY_DEFINE = foo'となります。あなたの状況に合わせたテストケースを用意して、ndk-build.cmdを使ってcygwinを使って動作させるかどうかを調べる必要があります。 –