cygwin中的ndk_build.cmd无法识别包含的mk文件

时间:2017-02-09 01:32:22

标签: android android-ndk java-native-interface cygwin ndk-build

我有多个使用jni构建的静态库。我有一个包含其他mk文件等的方案,允许我共享编译设置,包含来自其他依赖项目的文件等。

我已经在mac上成功设置了它并且一直在构建它。但是,当我试图在cygwin下的windows中做同样的事情时,我遇到了问题......

这是我的jni / Android.mk文件..

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

我看到的问题是ndk-build抱怨Project.mk文件。这就是我所看到的......

shammi@SHAMMIDEV /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.

我已经确认/cygdrive/c/projects/injitiProjects/injitiEngine/Engine/Core/jni/Project.mk确实存在,我是所有者,并且它具有用户/组/其他的读取权限。

同样,这个完全相同的设置在mac上完全正常。我只是在寻找一个可移植的开发环境。

我在这里错过了什么..?

3 个答案:

答案 0 :(得分:0)

我想我忘记了ndk-build.cmd是一个windows shell批处理脚本(DOH)。 答案是我能够调用/ build / ndk-build这是一个在cygwin中运行的sh脚本。

答案 1 :(得分:0)

您可能需要使用LOCAL_PATH代替PWD。我不确定PWD是如何设置的(我认为它是一个make builtin?),但我们实际上可以控制LOCAL_PATH并且可以确保它以正确的方式设置为cygwin。

答案 2 :(得分:0)

如果您将其定义为APP_BUILD_SCRIPT,请不要包含该内容?

代表。

APP_BUILD_SCRIPT:= jni / Android.mk

如果以上不起作用,也可以尝试$(shell $ pwd)而不是$(PWD),如果我不在括号中使用shell,通常ndk不会为我解释shell命令。