Ошибка создания файла с несколькими целевыми шаблонами - PullRequest
67 голосов
/ 20 января 2010

Мой make-файл завершается ошибкой:

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

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

( GNU make manual , написанное Captain Obvious, не помогает).


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

$(FOO): bar

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

Ответы [ 5 ]

51 голосов
/ 14 сентября 2010

У меня было это на 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}
11 голосов
/ 15 февраля 2013

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

4 голосов
/ 24 сентября 2013

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

sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d

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

И может также добавить

-e 's@^ \+@\t@'

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

3 голосов
/ 31 августа 2015

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

Например:

Ранее имя моей папки было: "Qt Projects"

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...