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

我((重新)build设,使用cygwin make.exe版本时,得到了这个错误:3.81。

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

这个错误是由于存在一个":" 。 因此它不再支持Windowspath。 您需要下载3.80版本并replace\bin目录中的make.exe

显然它也需要cygintl12.dll

  • 回滚使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

当在Linux或OSX上构build一个项目时,我得到了同样的错误,这是以前在Windows机器上构build的,并且在输出文件夹中有一些.od文件。

一旦我手动删除.od文件问题已解决。 显然,我的IDE(这里是CodeLite)的“Clean”命令并没有删除.od文件。

最有可能是由于驱动器盘符后出现冒号。 例如考虑

 build : $(NativeHeaders)/* 

如果

 NativeHeaders=../../../cpp/generated 

那么一切都很好,但是

 NativeHeaders=C:/dev/folder/cpp/generated 

导致你得到的错误。

我得到这个错误,因为我的命令开头没有Tab(\ t)字符。 我有我的vim集扩展选项卡,所以它是用4个空格replace制表符。 当我把它closures,并改变空间到一个标签它是固定的

我使用cygwin构buildAndroid NDK时, target pattern contains no '%'错误。

我发现以下链接有帮助:

Make生成的错误

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

这些生成格式不正确的静态模式规则。 第一种意思是规则的目标部分没有模式; 第二种方法是在目标部分有多个模式; 第三种意思是目标不包含模式字符(%); 第四种意思是静态模式规则的所有三个部分都包含模式字符(%) – 只有前两个部分应该。 如果您看到这些错误,而您并未尝试创build静态模式规则, 请检查目标和先决条件列表中的任何variables的值,以确保它们不包含冒号。 请参阅静态模式规则的语法 。

所以,我的解决scheme包括将我的系统variables从Windows格式更改为Unix格式,如下所示:

  • 代替C:\Android\android-ndk-r10c ,我使用/cygdrive/c/Android/android-ndk-r10c作为NDKpath。

同样,我将NDK项目path更改为/cygdrive/c/Android/project/src/main/jni

在我的情况下,当我遇到这个错误时,我正在使用Cygwin下的CMake。 原来CMake的Windows版本被执行了。 随后,在make文件中使用Windowspath。 我通过安装程序安装了Cygwin的CMake版本,并使其工作。

我在Linux上有这个问题,当构build目录包含一个“:”造成一个名为“服务器:端口”的目录的mercurial签出造成的。

我必须改变我的make文件中的以下与Make_381兼容:
之前:
ARDUINO_BASE_DIR = C:\ programs / arduino

现在:
ARDUINO_BASE_DIR = \\ programs / arduino

如果你正在运行Eclipse C / C ++并从Windows下的Cygwin引用文件,请确保c:/ cygwin / bin或c:/ cygwin64 / bin在Windowspath环境中的首选编译器工具之后。

例如:Path =; C:\ yagarto \ bin; C:\ yagarto-tools \ bin; C:\ cygwin64 \ bin;

完成更改后,退出Eclipse并重新启动以使其生效(只需重新启动Eclipse而不退出就不能解决问题。

在我的项目中,obj文件夹可能已损坏,我得到这个错误。 手动删除obj文件夹。 然后ndk-build完成。