Подтвердить что ты не робот

"множественные целевые шаблоны" Ошибка Makefile

Мой make файл выходит из строя с ошибкой:

Makefile:34: *** multiple target patterns.  Stop.

Что это значит, как я могу это исправить?

(Инструкция GNU, написанная капитаном Очевидным, не помогает).


Нашел. У меня было правило в форме:

$(FOO): bar

где FOO был установлен из команды оболочки, которая загрязнила его сообщением об ошибке, содержащим двоеточие.

4b9b3361

Ответ 1

У меня было это на Makefile

MAPS+=reverse/db.901:550:2001.ip6.arpa 
lastserial:  ${MAPS}
    ./updateser ${MAPS}

Это из-за : в имени файла. Я решил это с помощью

                      -------- notice
                     /    /
                    v    v
MAPS+=reverse/db.901\:550\:2001.ip6.arpa
lastserial:  ${MAPS}
    ./updateser ${MAPS}

Ответ 2

Помимо необходимости избегать двоеточий, как в исходном ответе, я обнаружил, что отступы отключены, и вы можете получить ту же проблему. В одном make файле мне пришлось заменить пробелы на вкладку, и это позволило мне пройти мимо ошибки.

Ответ 3

Я просто хочу добавить, если вы получите эту ошибку, потому что используете Cygwin make и автоматически сгенерированные файлы, вы можете исправить его со следующим sed,

sed -e '[email protected]\\\([^ ]\)@/\[email protected]' -e '[email protected][cC]:@/cygdrive/[email protected]' -i filename.d

Вам может потребоваться добавить больше символов, чем просто пробел в список исключений в первая замена, но вы получите эту идею. Понятие здесь состоит в том, что /cygdrive/c является псевдоним для c: что cygwin make будет распознавать.

И может также бросить

-e '[email protected]^ \[email protected]\[email protected]'

на всякий случай, когда вы начали с пробелов при аварии (хотя я/думаю/это будет обычно это ошибка "пропавшего разделителя" ).

Ответ 4

Я встретился с той же ошибкой. После битвы я обнаружил, что это произошло из-за "Space" в названии папки.

Например:

Ранее имя моей папки:   "Проекты Qt"

Позже я изменил его на: "QtProjects"

и моя проблема была решена.

Это очень простая, но иногда серьезная проблема.

Ответ 5

У меня была эта проблема (двоеточие в целевом имени), потому что у меня была -n в моей переменной среды GREP_OPTIONS. По-видимому, это вызвало configure неправильное создание Makefile.