【发布时间】:2010-10-10 17:35:39
【问题描述】:
我在(重新)构建时遇到此错误,使用 cygwin make.exe 版本:3.81。
Error : *** target pattern contains no `%'.
【问题讨论】:
我在(重新)构建时遇到此错误,使用 cygwin make.exe 版本:3.81。
Error : *** target pattern contains no `%'.
【问题讨论】:
此错误是由于存在":"。因此它不再支持 windows 路径。
需要下载3.80版本,替换\bin目录下的make.exe。
显然它也需要cygintl12.dll。
【讨论】:
回滚到 3.80 (Geant4)
cd /usr/binmv make.exe make_381.exewget http://geant4.cern.ch/support/extras/cygwin/make.exechmod +x make.exe从 cygwin 安装程序中安装 libintl2 以获得所需的 cygintl-2.dll
【讨论】:
我在尝试在 Linux 或 OSX 上构建项目时遇到了同样的错误,该项目以前是在 Windows 机器上构建的,并且在输出文件夹中存在一些 .o.d 文件。
一旦我手动删除了 .o.d 文件,问题就解决了。显然,我的 IDE(在本例中为 CodeLite)的“清理”命令并未删除 .o.d 文件。
【讨论】:
很可能是因为驱动器号后面有一个冒号。例如考虑
build : $(NativeHeaders)/*
如果
NativeHeaders=../../../cpp/generated
那么一切都很好,但是
NativeHeaders=C:/dev/folder/cpp/generated
导致您得到的错误。
【讨论】:
我收到此错误是因为我的命令开头没有制表符 (\t) 字符。我的 vim 集中有 expandtab,所以它用 4 个空格替换了一个制表符。当我将其关闭并将空格更改为选项卡时,它已修复
【讨论】:
我在使用 cygwin 构建 Android NDK 时遇到了target pattern contains no '%' 错误。
我发现以下链接很有帮助:
- '缺少目标模式。停下来。”
- '多个目标模式。停下来。”
- ‘目标模式不包含‘%’。停下来。”
- '混合隐式和静态模式规则。停下来。”
这些是为格式错误的静态模式规则生成的。第一个意味着规则的目标部分没有模式;第二种意味着目标部分中有多个模式;第三个表示目标不包含模式字符(%);第四个意味着静态模式规则的所有三个部分都包含模式字符(%)——只有前两个部分应该。如果您看到这些错误并且您没有尝试创建静态模式规则,请检查您的目标和先决条件列表中的任何变量的值,以确保它们不包含冒号。 见Syntax of Static Pattern Rules。
因此,我的解决方案包括将系统变量从 Windows 格式更改为 Unix 格式,如下所示:
/cygdrive/c/Android/android-ndk-r10c 代替C:\Android\android-ndk-r10c 作为NDK 路径。同样,我将 NDK 项目路径更改为/cygdrive/c/Android/project/src/main/jni。
【讨论】:
就我而言,当我遇到此错误时,我正在使用 Cygwin 下的 CMake。原来是 Windows 版本的 CMake 被执行了。随后,在 make 文件中使用了 Windows 路径。我通过安装程序安装了 Cygwin 的 CMake 版本并让它工作。
【讨论】:
当构建目录包含“:”时,我在 Linux 上遇到了这个问题,这是由于执行 mercurial checkout 创建了一个名为“server:port”的目录而导致的。
【讨论】:
我必须在我的 make 文件中更改以下内容以与 Make_381 兼容:
之前:
ARDUINO_BASE_DIR = C:\programs/arduino
现在:
ARDUINO_BASE_DIR = \\programs/arduino
【讨论】:
如果您在 Windows 下运行 Eclipse C/C++ 并从 Cygwin 引用文件,请尝试此操作,确保 c:/cygwin/bin 或 c:/cygwin64/bin 位于 Windows 路径环境中您首选的编译器工具之后。
示例: 路径 = ;C:\yagarto\bin;C:\yagarto-tools\bin;C:\cygwin64\bin;
修改完成后,退出 Eclipse 并重启生效(直接重启 Eclipse 不退出并不能解决问题。
【讨论】:
在我的项目中,obj 文件夹可能已损坏,我收到此错误。手动删除 obj 文件夹。然后 ndk-build 完成就好了。
【讨论】: