当前位置: 代码迷 >> Android >> cygwin中的ndk_build.cmd无法识别包含的mk文件
  详细解决方案

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

热度:34   发布时间:2023-08-04 09:58:09.0

我有多个使用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上绝对可以正常工作。 我只是在寻找一个可移植的开发环境。

我在这里想念什么..?

我想我忘了ndk-build.cmd是Windows Shell批处理脚本(DOH)。 答案是我能够调用/ build / ndk-build,这是一个可以在cygwin中轻松运行的sh脚本。

您可能需要使用LOCAL_PATH而不是PWD 我不太确定PWD的设置方式(我认为这是内置的make吗?),但实际上我们可以控制LOCAL_PATH并可以确保为cygwin设置正确的方式。

如果您将其定义为APP_BUILD_SCRIPT,而不是包括该怎么办?

对于前。

APP_BUILD_SCRIPT:= jni / Android.mk

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

  相关解决方案