Czytam dokument GNU Make. Oto przykładCztery znaki dolara w Makefile
% .d:% .c
@set -e; rm -f [email protected]; \ $(CC) -M $(CPPFLAGS) $< > [email protected]$$$$; \ sed ’s,\($*\)\.o[ :]*,\1.o [email protected] : ,g’ < [email protected]$$$$ > [email protected]; \ rm -f [email protected]$$$$
Próbowałem to na C++ programu i dostał listę plików
init3d.d init3d .d.18449 input.d input.d.18444 main.d main.d.18439
Oto co znalazłem, ale nie wiesz nderstand w tym samym document
Jeśli włączono ekspansję wtórnego i chcesz dosłowny znak dolara na liście przesłanek należy właściwie napisać cztery znaki dolara („$$$$”).
Zastanawiam się, co właściwie oznaczają cztery znaki dolara "$$$$"? Jak oni 18449, 18444 lub 18439?
Dzięki i pozdrawiam!
Secondary ekspansja nie wpływa na treść przepisu. Tylko lista wymagań wstępnych. Tak więc '$$$$' zawsze tworzy '$$' w kontekście receptury. Potrzebujesz tylko "$$$$" na liście wymagań wstępnych, aby uzyskać pojedyncze '$', gdy rozszerzenie wtórne jest włączone (gdy nie korzysta z '$$', dostaniesz to). –
To nie jest odpowiedź. Wtórne rozszerzenie jest nieistotne. – reinierpost
@reinierpost Wydaje się, że masz takie same trudności ze zrozumieniem jak Etan Reisner :) Oryginalny plakat mówił o wtórnej ekspansji, dlatego napisałem o tym. Rzeczywiste wyjaśnienie znajduje się w drugim akapicie, a najbardziej prawdopodobnym powodem zastosowania tego konstruktu jest nawiasowany akapit trzeci. –