Android ndk-build 命令返回 'target pattern contains no ' %'

标签 android c++ android-ndk java-native-interface adt

我看过其他类似的问题,但它们似乎并没有解决我的问题。第一次尝试在 Windows 上构建 C++/Android 项目,有几个问题:

1) Android NDK 文档说需要 cygwin,网上有些人说不需要。我都试过了。但是我在 cmd.exe 和 cygwin 窗口上使用 ndk-build 构建我们的项目时遇到很多错误。在 cygwin 上它说

 *** target pattern contains no '%'.  Stop.

我搜索了make文件中可能有一些windows风格的路径。有人说使用:$(shell cygpath -u $(path)) 而不是 $(path) ... 它没有帮助。

2) 由于这是一个大项目,我想检查一下它在哪些地方采用了 Windows 风格的路径。但是,即使是用于回显其值的简单 @echo 命令也不起作用。

@echo $(path)

网上有人说我们可以用这个样式:

.PHONY: print_vals
print_vals:
<tab>@echo $(path)

但这也不起作用。 Windows 上的 Android NDK 开发很困难:(。

最佳答案

首先,Cygwin 不需要在 Windows 上运行 ndk-build,只需要运行 ndk-gdb,而且还有一个不需要 Cygwin 的 python 版本(ndk-gdb.py)。

其次,您的 Android.mk 文件中一定有一些奇怪的东西。如果您不知道 GNU Make 是如何工作的,您应该真正将自己限制在 NDK 文档中描述的功能(例如 $NDK/docs/ANDROID-MK.html 和 $NDK/docs/HOWTO.html)

很难说出您看到此消息的确切原因,但这很可能是因为您在直接目标定义中使用了绝对 Windows 文件路径。

最后,您不能使用 echo 来调试 Makefile,请改用 $(info path=$(path))

关于Android ndk-build 命令返回 'target pattern contains no ' %',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681663/

相关文章:

java - 如何从房间数据库读取所有值并显示到recyclerview中?

android - 为什么WebView无法打开网站?

java - JNI 检测到应用程序错误 : the return type of CallObjectMethodV does not match void android. media.AudioTrack.play()

安卓|在 Genymotion 模拟器上调试 native 应用程序

javascript - Sencha Touch 2 - Android 性能

Android Studio 2.2 preview1 错误

c++ - Lambda 和通过引用局部变量 : Accessing after the scope 捕获

c++ - 包含 boost 库时出错

c++ - BOOST_STRONG_TYPEDEF 几乎但不完全像它的基础

android - 无法构建 OpenCV Android 示例项目