Czy istnieje sposób na uzyskanie spacji wewnątrz nazw docelowych działających przy użyciu programu make.exe? Wydaje się niemożliwe, jeśli to naprawdę starożytne raport o błędzie jest poprawna: http://savannah.gnu.org/bugs/?712Zezwalaj na miejsce w pliku GCC makefile
Dla porównania, dużym problemem jest to, że kawałki makefile komendy jak:
"foo bar baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
... wydaje się traktować jako trzy oddzielne polecenia: jeden do zbudowania "foo (uwaga w załączeniu"), jeden do zbudowania paska, a na końcu jeden do zbudowania baz "(ponownie, w tym"). Dzieje się tak, ponieważ make.exe wydaje się używać spacji jako ogranicznika.
Można jednak założyć, że na przykład można zbudować "Hello World.exe". To nie wydaje się możliwe. Cudzysłowy nie pracują, ani nie uciekając oddzielne słów (Czytałem gdzieś, że nie pamięta link):
"foo\\ bar\\ baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
jest jakiś inny sposób aby to naprawić? Oficjalna instrukcja potwierdza tylko rzeczy tokenize-by-przestrzeni, ale nie dostarcza sposób na wykorzystanie przestrzeni do innych celów: http://www.gnu.org/software/make/manual/make.html#Rule-Syntax
Edit: jak sugeruje, próbowałem też pojedyncze ukośniki, ale mają one dokładnie taki sam efekt, jak podwójne ukośniki. Make narzeka, że nie może znaleźć zasady pierwszego słowa:
mingw32-make.exe: *** No rule to make target `foo', needed by `all'. Stop.
wykonywalny „foo bar baz.exe” jest prawidłowo wytwarzana chociaż, ale łączenie odbywa się za każdym razem za słowa.
To nie działa, zobacz edycję. – Orwell
@ Orrwell: Wtedy wydaje się, że to kwestia systemu operacyjnego. W jaki sposób określasz plik ze spacjami w nazwie w twojej powłoce? – Matthias