问题描述
我有多个使用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上绝对可以正常工作。 我只是在寻找一个可移植的开发环境。
我在这里想念什么..?
1楼
我想我忘了ndk-build.cmd是Windows Shell批处理脚本(DOH)。 答案是我能够调用/ build / ndk-build,这是一个可以在cygwin中轻松运行的sh脚本。
2楼
您可能需要使用LOCAL_PATH
而不是PWD
。
我不太确定PWD
的设置方式(我认为这是内置的make吗?),但实际上我们可以控制LOCAL_PATH并可以确保为cygwin设置正确的方式。
3楼
如果您将其定义为APP_BUILD_SCRIPT,而不是包括该怎么办?
对于前。
APP_BUILD_SCRIPT:= jni / Android.mk
如果上述方法不起作用,也可以尝试使用$(shell $ pwd)而不是$(PWD),如果我在括号中不使用shell,通常ndk不会为我解释shell命令。