Mój plik makefile kończy się niepowodzeniem z błędem:
Makefile:34: *** multiple target patterns. Stop.
Co to naprawdę oznacza, jak mogę to naprawić?
( Podręcznik GNU make , napisany przez Kapitana Oczywistego, nie pomaga).
Znalazłem to. Miałem regułę w formie:
$(FOO): bar
gdzie FOO
zostało ustawione z polecenia powłoki, które zanieczyściło go komunikatem o błędzie zawierającym dwukropek.
Odpowiedzi:
Miałem to w Makefile
To z powodu
:
w nazwie pliku. Rozwiązałem to zźródło
C:/Qt/5.8/mingw53_32/bin/rcc.exe
W jednej z reguł Makefile miałem jakąś starą ścieżkę systemu Windows z dwukropkiem ( ). Usuń te automatycznie generowane pliki makefile, jeśli tworzysz na komputerze z systemem Linuxmake clean
a następnie gomake
rozwiązał._build/nrf52840_xxaa/app_mpu.c.o: ../../../app_mpu.c \
Oprócz konieczności opuszczania dwukropków, jak w oryginalnej odpowiedzi, odkryłem, że jeśli wcięcie jest wyłączone, możesz potencjalnie napotkać ten sam problem. W jednym pliku makefile musiałem zamienić spacje na tabulator, co pozwoliło mi ominąć błąd.
źródło
Chcę tylko dodać, jeśli pojawi się ten błąd, ponieważ używasz plików Cygwin i generowanych automatycznie, możesz to naprawić za pomocą następującego seda,
sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d
Być może będziesz musiał dodać więcej znaków niż tylko spację do listy ucieczki w pierwszym podstawieniu, ale masz pomysł. Koncepcja jest taka, że / cygdrive / c jest aliasem dla c:, które marka cygwin rozpozna.
I równie dobrze może wrzucić
-e 's@^ \+@\t@'
na wypadek, gdybyś przypadkowo zaczął od spacji (chociaż myślę, że będzie to zwykle błąd „brakującego separatora”).
źródło
Spotkałem się z tym samym błędem. Po zmaganiach stwierdziłem, że jest to spowodowane „spacją” w nazwie folderu.
Na przykład :
Wcześniej nazwa mojego folderu brzmiała: „Projekty Qt”
Później zmieniłem to na: „QtProjects”
i mój problem został rozwiązany.
Jest to bardzo proste, ale czasami poważny problem.
źródło
Miałem ten problem (dwukropki w nazwie docelowej), ponieważ miałem
-n
w swojejGREP_OPTIONS
zmiennej środowiskowej. Najwyraźniej spowodowałoconfigure
toMakefile
niepoprawne wygenerowanie pliku.źródło
Moje IDE pozostawiło kombinację spacji i tabulatorów w moim Makefile.
Ustawienie mojego Makefile tak, aby używał tylko zakładek, naprawiło ten błąd.
źródło
Otrzymałem również ten błąd (w STM32CubeIDE opartym na Eclipse w systemie Windows).
Po dwukrotnym kliknięciu błędu „wiele wzorców docelowych” pokazywała ścieżkę do
.ld
pliku. Okazuje się, że jest to kolejny problem z „nielegalnymi postaciami”. Obrażającą postacią był (czekaj na to): =Heurystyka tygodnia: używaj tylko [a..z] na swoich ścieżkach, ponieważ na pewno będą inne niedozwolone znaki </vomit>.
Podręcznik GNU make nie dokumentuje tego wprost.
źródło