2017-02-09 8 views
0

Ich habe mehrere statische Bibliotheken, die mit jni erstellt werden. Ich habe ein Schema, das andere mk-Dateien usw. enthält, damit ich die Compilierungseinstellungen teilen kann, Dateien von anderen abhängigen Projekten usw. einschließe.ndk_build.cmd in cygwin erkennt keine enthaltenen mk-Dateien

Ich habe es erfolgreich auf dem Mac eingerichtet und habe es aufgebaut. Allerdings, wenn ich das gleiche in den Fenstern unter Cygwin zu tun, habe ich versucht, in Fragen renne ...

Hier meine jni/Android.mk Datei ist ..

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

Das Problem ich sehe ist, dass sich ndk-build über die Datei Project.mk beschwert. Hier ist, was ich sehe ..

[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. 

ich bestätigt haben, dass /cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk nicht vorhanden ist, und ich bin der Eigentümer und es hat Berechtigungen für Benutzer/Gruppe/Sonstiges gelesen.

Auch dieses exakt gleiche Setup funktioniert absolut gut auf dem Mac. Ich suche nur nach einer tragbaren Entwicklungsumgebung.

Was fehlt mir hier ..?

Antwort

0

Ich denke, ich habe vergessen, dass ndk-build.cmd ein Windows Shell Batch Script (DOH) war. Die Antwort war, dass ich/bd/ndk-build aufrufen konnte, was ein sh-Skript ist, das in cygwin läuft.

+0

ndk-build.cmd sollte jedoch in Cygwin funktionieren. Ich plante eigentlich, die Shell-Skript-Version zu entfernen, weil die gesamte cygwin-Unterstützung in der Shell-Version wirklich schlecht ist, aber die Batch-Datei mit Cygwin funktionierte gut, als ich es ausprobierte. Ich denke, das Problem ist, dass Sie '$ (PWD)' anstelle von '$ (LOCAL_PATH)' verwendet haben. –

+0

Ich glaube, der Grund, warum ich $ (PWD) tat, war, den vollständigen Pfad im Gegensatz zu einem relativen Pfad zu erhalten. Ich könnte das System übertrieben haben, aber es erlaubt allen meinen Bibliotheken, gemeinsame Einstellungen zu teilen und bietet die Möglichkeit, über Dateien wie Source.mk, AdditionalIncludes.mk, und Target.mk, usw. anzupassen. Ich reparierte das $ (PWD) früher mit $ (shell pwd) und mit einem pwd-batch-script früher, aber lief auf andere probleme kompilieren es in Windows und entschied sich stattdessen cygwin auszuprobieren. Egal, es funktioniert jetzt. Bitte entfernen Sie nicht das sh-Skript, das jetzt dort ist. Ich benutze es erfolgreich :) – Shammi

+0

Im Allgemeinen, wenn es Optionen gibt, die Sie auf alle Ihren Code anwenden möchten, sollten sie in Application.mk gehen. d.h. 'APP_CFLAGS: = -DMY_DEFINE = foo '. Ich muss versuchen, einen Testfall für Ihre Situation zu entwickeln und zu sehen, ob ich es mit Cygwin verhalten kann, wenn Sie ndk-build.cmd verwenden. –

0

Sie müssen wahrscheinlich LOCAL_PATH statt PWD verwenden. Ich bin nicht wirklich sicher, wie PWD gesetzt wird (ich denke, es ist ein make builtin?), Aber wir haben tatsächlich die Kontrolle über LOCAL_PATH und können sicherstellen, dass es in der richtigen Weise für Cygwin gesetzt wird.

0

Anstatt was zu verwenden, wenn Sie es als APP_BUILD_SCRIPT definieren?

für ex.

APP_BUILD_SCRIPT: = jni/Android.mk

Auch Id versuchen $ (shell $ PWD) statt $ (PWD), wenn die oben nicht, in der Regel nicht funktioniert NDK nicht Shell-Befehle für mich interpretieren, wenn Ich verwende die Shell nicht in Klammern.

+0

Ich habe am Ende Ihre $ (Shell Pwd) Lösung früher erfolgreich verwendet. Ich stieß jedoch auf andere Probleme, die durch die von der Shell verursachten Umgebungsunterschiede verursacht wurden, und entschied mich, Cygwin stattdessen zu versuchen. Trotzdem scheint es jetzt zu funktionieren, dass ich das ndk-build-Skript unter dem Build-Ordner verwende. – Shammi