"несколько целевых шаблонов" делают ошибку файла


мой makefile завершается с ошибкой:

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

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

(GNU make manual, написанный капитаном очевидным, не помогает).


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

$(FOO): bar

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

5 63

5 ответов:

у меня было это на 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}

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

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

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

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

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

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

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

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

например :

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

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

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

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

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