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完成。