Cygwin делает ошибку:*** целевой шаблон не содержит `%'
Вопрос
Я получил эту ошибку при (пере) сборке с использованием cygwin make.exe версии: 3.81.
Error : *** target pattern contains no `%'.
Решение
Эта ошибка связана с наличием ":"
.Поэтому он больше не поддерживает пути Windows.Вам необходимо скачать версию 3.80 и заменить make.exe
в \bin
каталог.
Видимо, это нужно cygintl12.dll
слишком.
Другие советы
откатить на 3.80(Геант4)
cd /usr/bin
mv make.exe make_381.exe
wget http://geant4.cern.ch/support/extras/cygwin/make.exe
chmod +x make.exe
установить
libintl2
из настройки Cygwin для необходимогоcygintl-2.dll
Я получил ту же ошибку при попытке собрать проект в Linux или OSX, который ранее был создан на компьютере с Windows и имел некоторые .о.д файлы висят в выходной папке.
Как только я вручную удалил .о.д файлы, проблема решена.Судя по всему, команда «Очистить» моей IDE (в данном случае CodeLite) не удаляла .о.д файлы.
Скорее всего из-за наличия двоеточия после буквы диска.Например, рассмотрим
build : $(NativeHeaders)/*
Если
NativeHeaders=../../../cpp/generated
тогда все хорошо, но
NativeHeaders=C:/dev/folder/cpp/generated
приводит к ошибке, которую вы получаете.
Я получал эту ошибку, потому что в начале моих команд не было символа табуляции ( ).В моем наборе vim был расширенный табулятор, поэтому он заменял символ табуляции четырьмя пробелами.Когда я отключил это и заменил пробелы на табуляцию, это было исправлено.
у меня был target pattern contains no '%'
ошибка при сборке с помощью Android NDK с использованием cygwin.
Я нашел следующую ссылку полезной:
- «отсутствует целевой шаблон».Останавливаться.'
- «множественные целевые шаблоны».Останавливаться.'
- «Целевой шаблон не содержит `%'.Останавливаться.'
- «смешанные неявные и статические шаблонные правила».Останавливаться.'
Они создаются для неверных правил статического шаблона.Первое означает, что в целевом разделе правила нет шаблона;второй означает, что в целевом разделе имеется несколько шаблонов;третий означает, что цель не содержит символа шаблона (%);а четвертый означает, что все три части правила статического шаблона содержат символы шаблона (%) — должны быть только первые две части.Если вы видите эти ошибки и не пытаетесь создать правило статического шаблона, проверьте значения любых переменных в целевых и обязательных списках, чтобы убедиться, что они не содержат двоеточий. Видеть Синтаксис правил статического шаблона.
Итак, мое решение включало изменение моих системных переменных из формата Windows в формат Unix следующим образом:
- Вместо
C:\Android\android-ndk-r10c
, Я использовал/cygdrive/c/Android/android-ndk-r10c
для пути NDK.
Аналогичным образом я изменил путь проекта NDK на /cygdrive/c/Android/project/src/main/jni
.
В моем случае я использовал CMake под Cygwin, когда получил эту ошибку.Оказалось, что была запущена версия CMake для Windows.Впоследствии в make-файле использовались пути Windows.Я установил версию CMake от Cygwin через программу установки, и она заработала.
У меня возникла эта проблема в Linux, когда каталог сборки содержал символ «:», вызванный выполнением постоянной проверки, в результате которой был создан каталог с именем «сервер: порт».
Мне пришлось изменить следующее в моем файле make, чтобы оно было совместимо с Make_381:
до:
ARDUINO_BASE_DIR = C:\programs/arduino
сейчас:
ARDUINO_BASE_DIR = \\programs/arduino
Попробуйте это, если вы используете Eclipse C/C++ и ссылаетесь на файлы из Cygwin под Windows, убедитесь, что c:/cygwin/bin или c:/cygwin64/bin идет после предпочитаемых вами инструментов компилятора в вашей среде Windows Path.
Пример:Путь = ;C:\yagarto\bin;C:\yagarto-tools\bin;C:\cygwin64\bin;
После внесения изменений выйдите из Eclipse и перезапустите его, чтобы изменения вступили в силу (простой перезапуск Eclipse без выхода не решит проблему.
В моем проекте папка obj, вероятно, была повреждена, и я получал эту ошибку.Папку obj удалил вручную.Тогда ndk-build завершился нормально.