Cygwin делает ошибку: *** целевой шаблон не содержит `% ' - PullRequest
36 голосов
/ 02 марта 2009

Я получил эту ошибку при (пере) сборке с использованием версии cygwin make.exe: 3.81.

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

Ответы [ 11 ]

39 голосов
/ 02 марта 2009

Эта ошибка вызвана наличием ":". Поэтому он больше не поддерживает пути Windows. Вам необходимо скачать версию 3.80 и заменить make.exe в каталоге \bin.

Видимо, ему нужно cygintl12.dll.

27 голосов
/ 17 июля 2010
9 голосов
/ 05 декабря 2012

Я получил ту же ошибку при попытке построить проект на Linux или OSX, который ранее был построен на компьютере с Windows и имел несколько файлов .o.d в папке вывода.

После того как я вручную удалил файлы .o.d , проблема была решена. Очевидно, что команда «Очистить» моей IDE (в данном случае CodeLite) не удаляла файлы .o.d .

5 голосов
/ 20 ноября 2013

Скорее всего из-за наличия двоеточия после буквы диска. Например, рассмотрим

build : $(NativeHeaders)/*

Если

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

тогда все хорошо, но

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

приводит к ошибке, которую вы получаете.

3 голосов
/ 02 декабря 2012

Я получал эту ошибку, потому что у меня не было символа Tab (\ t) в начале моих команд. В моем наборе vim была команда расширения, поэтому он заменял символ табуляции четырьмя пробелами. Когда я выключил это и изменил пробелы на вкладке, это было исправлено

2 голосов
/ 17 ноября 2014

У меня была ошибка target pattern contains no '%' при сборке с Android NDK с использованием cygwin.

Мне показалась полезной следующая ссылка:

Ошибки, сгенерированные Make

  • ‘отсутствует целевой шаблон. Стоп. ’
  • ‘несколько шаблонов целей. Стоп «.
  • ‘целевой шаблон не содержит`% '. Стоп. ’
  • ‘смешанные неявные и статические правила шаблонов. Стоп «.

Они генерируются для некорректных статических шаблонных правил. Первый означает, что в целевом разделе правила нет шаблона; второе означает, что в целевой секции есть несколько паттернов; третье означает, что цель не содержит символ шаблона (%); и четвертый означает, что все три части правила статического шаблона содержат символы шаблона (%) - только первые две части должны. Если вы видите эти ошибки и не пытаетесь создать правило статического шаблона, проверьте значение любых переменных в целевых и обязательных списках, чтобы убедиться, что они не содержат двоеточия. См. Синтаксис статических шаблонных правил .

Итак, мое решение включало изменение системных переменных из формата Windows в формат Unix следующим образом:

  • Вместо C:\Android\android-ndk-r10c я использовал /cygdrive/c/Android/android-ndk-r10c для пути NDK.

Аналогичным образом я изменил путь к проекту NDK на /cygdrive/c/Android/project/src/main/jni.

1 голос
/ 22 декабря 2013

У меня была эта проблема в Linux, когда каталог сборки содержал «:», вызванный выполнением ртутной проверки, которая создала каталог с именем «server: port».

1 голос
/ 28 ноября 2013

В моем случае я использовал CMake под Cygwin, когда получил эту ошибку. Оказалось, что Windows-версия CMake была выполнена. Впоследствии пути Windows были использованы в файле make. Я установил Cygwin-версию CMake через программу установки и заставил ее работать.

0 голосов
/ 18 сентября 2014

В моем проекте папка obj, вероятно, была повреждена, и я получал эту ошибку. Вручную удалена папка obj. Затем ndk-build завершена нормально.

0 голосов
/ 04 июня 2014

Попробуйте, если вы используете Eclipse C / C ++ и ссылаетесь на файлы из Cygwin под Windows, убедитесь, что c: / cygwin / bin или c: / cygwin64 / bin идут после ваших предпочитаемых инструментов компилятора в среде Windows Path. 1001 *

Пример: Путь =; C: \ yagarto \ bin; C: \ yagarto-tools \ bin; C: \ cygwin64 \ bin;

После внесения изменений выйдите из Eclipse и перезапустите, чтобы он вступил в силу (простой перезапуск Eclipse без выхода не решит проблему.

...