Certo, ma quando vuoi che li sputi?
Per riportare il nome del target quando esegue la regola, inserisci una riga nella regola:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
Per sputarli tutti in una volta, potresti creare un obiettivo PHONY separato:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
E questo può essere considerato un prerequisito del tuo target predefinito:
all: show_vars
...
MODIFICARE:
vuoi un modo per mostrare tutti i possibili obiettivi di un makefile arbitrario, che suppongo significhi non intrusivo. Bene...
Per farlo esattamente ed essere in grado di gestire makefile sofisticati, ad esempio che coinvolgono regole costruite da eval
istruzioni, dovresti scrivere qualcosa di simile a un emulatore Make. Poco pratico.
Per vedere gli obiettivi delle regole semplici, potresti scrivere un makefile che funga da scanner di makefile, operando su un makefile arbitrario:
- Ottieni tutti i nomi di destinazione dal makefile usando sed.
- `include` il makefile per usarlo per espandere le variabili.
- Usa `show_%:; echo $$ * `per stampare tutti i target
Questo sarebbe un lavoro impressionante. Sei sicuro che l'obiettivo valga lo sforzo?