我有多个使用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上完全正常。我只是在寻找一个可移植的开发环境。
我在这里错过了什么..?
答案 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命令。