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