"несколько целевых шаблонов" делают ошибку файла
мой makefile завершается с ошибкой:
Makefile:34: *** multiple target patterns. Stop.
что это значит, как я могу это исправить?
(GNU make manual, написанный капитаном очевидным, не помогает).
нашли его. У меня было правило по форме:
$(FOO): bar
здесь FOO
был установлен из команды оболочки, которая загрязнила его сообщением об ошибке, содержащим двоеточие.
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@'
на всякий случай, если вы начали с пробелов несчастный случай (хотя я / думаю / это будет обычно это ошибка "отсутствует разделитель").