Mimo to nie miało dla ciebie, ja spotkałem się ten sam komunikat o błędzie z innym powód. Odpowiadam więc również tutaj, aby pomóc ludziom w przyszłości, gdy napotkają komunikat o błędzie, ale powód nie jest tak oczywisty jak w twoim przypadku.
Oto minimalne przykład sprowokować wystąpienie błędu przez jedynie o pliku ze znakiem równości w nazwie pasuje $(wildcard)
(oczywiście tutaj w celach demonstracyjnych ja pasującymi tylko nazwy plików z =
) skreśla się. Ściśle mówiąc nie ma znaczenia, jakiej metody używasz do pobierania nazw zmiennych $(FILES)
.
FILES := $(wildcard ./*=*)
.PHONY: all
define foo
all: something-$(1)
something-$(1): $(1)
cat $$^ > [email protected]
endef
$(foreach goal,$(sort $(FILES)),$(eval $(call foo,$(goal))))
Problem pojawia się w sposobie ekspansji - w tym przypadku dzieje się tak tylko z powodu makra.
W każdym razie, byłem zaskoczony, kiedy skończyłem z tym komunikatem o błędzie, podczas gdy sam plik make - również zgodnie z kontrolą wersji - nie zmienił się. Dopóki nie przyszło mi do głowy, że musi istnieć jakaś przyczyna problemu. Niech pomoże przyszłej osobie w poszukiwaniu odpowiedzi.
Czy te spacje znajdują się na lewym marginesie pliku Makefile? Lub karty? – Beta
W pliku Makefile znajdują się zakładki – user1284151