Jasne, ale kiedy chcesz, żeby je wypluła?
Aby zgłosić nazwę celu po uruchomieniu reguły, umieść wiersz w regule:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
Aby wypluć je wszystkie na raz, możesz stworzyć osobny cel PHONY:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
Można to uczynić warunkiem wstępnym domyślnego celu:
all: show_vars
...
EDYTOWAĆ:
Chcesz sposobu, aby pokazać wszystkie możliwe cele dowolnego pliku makefile, co, jak przypuszczam, oznacza nieinwazyjne. Dobrze...
Aby to zrobić dokładnie i móc poradzić sobie z wyrafinowanymi plikami makefile, np. Zawierającymi reguły skonstruowane przez eval
instrukcje, musiałbyś napisać coś zbliżonego do emulatora Make. Niepraktyczny.
Aby zobaczyć cele prostych reguł, możesz napisać plik makefile, który działałby jak skaner makefile, działający na dowolnym pliku makefile:
- Pobierz wszystkie nazwy celów z pliku makefile za pomocą seda.
- `include` makefile, aby użyć go do rozwinięcia zmiennych.
- Użyj `show_%:; echo $$ * `wypisuje wszystkie cele
To byłaby imponująca praca. Czy na pewno ten cel jest wart wysiłku?