Claro, pero ¿cuándo quieres que los escupe?
Para informar el nombre del objetivo cuando ejecuta la regla, coloque una línea en la regla:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
Para escupirlos todos a la vez, puede hacer un objetivo PHONY separado:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
Y esto puede convertirse en un requisito previo de su objetivo predeterminado:
all: show_vars
...
EDITAR:
desea una forma de mostrar todos los objetivos posibles de un archivo MAKE arbitrario, lo que supongo que significa de forma no intrusiva. Bien...
Para hacerlo exactamente, y ser capaz de manejar archivos MAKE sofisticados, por ejemplo, que involucren reglas construidas por eval
declaraciones, tendría que escribir algo parecido a un emulador Make. Poco práctico.
Para ver los objetivos de las reglas simples, puede escribir un archivo MAKE que actuaría como un escáner de archivos MAKE, operando en un archivo MAKE arbitrario:
- Obtenga todos los nombres de destino del archivo MAKE usando sed.
- `incluir` el archivo MAKE para usarlo para expandir variables.
- Utilice `show_%:; echo $$ * `para imprimir todos los objetivos
Este sería un trabajo impresionante. ¿Estás seguro de que el objetivo merece la pena?