Cygwin犯错:***目标模式不包含'%'

时间:2009-03-02 07:25:03

标签: cygwin makefile

使用cygwin make.exe版本(重新)构建时出现此错误:3.81。

Error : *** target pattern contains no `%'.

11 个答案:

答案 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 '%'错误。

我发现以下链接很有用:

  

Errors Generated by Make

     
      
  • '缺少目标模式。停止。'
  •   
  • '多个目标模式。停止。”
  •   
  • '目标模式不包含'%'。停止。'
  •   
  • '混合隐式和静态模式规则。停止。”
  •   
     

这些是针对格式错误的静态模式规则生成的。第一种意味着规则的目标部分没有模式;第二个意味着目标部分有多个模式;第三个意味着目标不包含模式字符(%);第四个意味着静态模式规则的所有三个部分都包含模式字符(%) - 只有前两个部分应该。如果您看到这些错误并且您没有尝试创建静态模式规则, 检查目标和先决条件列表中的任何变量的值,以确保它们不包含冒号。 < / 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就完成了。