Question

I got this error while (re)building, using cygwin make.exe version :3.81.

Error : *** target pattern contains no `%'.
Was it helpful?

Solution

This error is due to a presence of a ":". Therefore it no longer supports windows paths. You need to download version 3.80 and replace the make.exe in the \bin directory.

Apparently it needs cygintl12.dll too.

OTHER TIPS

  • rollback to make 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
  • install libintl2 from cygwin setup for the required cygintl-2.dll

I got the same error when trying to build a project on Linux or OSX, that was previously built on a Windows machine and had some .o.d files hanging around in the output folder.

Once I manually deleted the .o.d files the problem was resolved. Apparently the "Clean" command of my IDE (CodeLite in this case) wasn't deleting the .o.d files.

Most likely due to the presence of a colon following a drive letter. For example consider

build : $(NativeHeaders)/*

If

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

then all is well, but

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

results in the error that you get.

I was getting this error because I didn't have a Tab (\t) character at the beginning of my commands. I had expandtab in my vim set so it was replacing a tab character with 4 spaces. When I turned that off and changed spaces to a tab it was fixed

I had the target pattern contains no '%' error while building with the Android NDK using cygwin.

I found the following link helpful:

Errors Generated by Make

  • ‘missing target pattern. Stop.’
  • ‘multiple target patterns. Stop.’
  • ‘target pattern contains no `%'. Stop.’
  • ‘mixed implicit and static pattern rules. Stop.’

These are generated for malformed static pattern rules. The first means there’s no pattern in the target section of the rule; the second means there are multiple patterns in the target section; the third means the target doesn’t contain a pattern character (%); and the fourth means that all three parts of the static pattern rule contain pattern characters (%)–only the first two parts should. If you see these errors and you aren’t trying to create a static pattern rule, check the value of any variables in your target and prerequisite lists to be sure they do not contain colons. See Syntax of Static Pattern Rules.

And so, my solution included changing my system variables from Windows format to Unix format like so:

  • Instead of C:\Android\android-ndk-r10c, I used /cygdrive/c/Android/android-ndk-r10c for the NDK path.

Similarly, I changed the NDK project path to /cygdrive/c/Android/project/src/main/jni.

In my case I was using CMake under Cygwin when I got this error. It turned out the Windows version of CMake was executed. Subsequently, Windows paths were used in the make file. I installed Cygwin's version of CMake through the setup program and got it working.

I had this problem on Linux when the build directory contained a ":" caused by doing a mercurial checkout which created a directory named "server:port".

I had to change the following in my make file to be compatible with Make_381:
before:
ARDUINO_BASE_DIR = C:\programs/arduino

now:
ARDUINO_BASE_DIR = \\programs/arduino

Try this if you're running Eclipse C/C++ and referencing files from Cygwin under Windows, make sure c:/cygwin/bin or c:/cygwin64/bin comes after your preferred compiler tools in your Windows Path environment.

Example: Path = ;C:\yagarto\bin;C:\yagarto-tools\bin;C:\cygwin64\bin;

After making the changes, exit Eclipse and restart for it to take effect (simply restarting Eclipse without exiting won't fix the problem.

In my project, obj folder was probably corrupted and I was getting this error. Manually deleted obj folder. Then ndk-build completed fine.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top