Bien sûr, mais quand voulez-vous qu'il les recrache?
Pour signaler le nom de la cible lorsqu'elle exécute la règle, placez une ligne dans la règle:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
Pour les recracher tous en même temps, vous pouvez créer une cible PHONY distincte:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
Et cela peut être une condition préalable de votre cible par défaut:
all: show_vars
...
EDIT:
Vous voulez un moyen d'afficher toutes les cibles possibles d'un makefile arbitraire, ce qui, je suppose, signifie de manière non intrusive. Bien...
Pour le faire exactement, et être capable de gérer des makefiles sophistiqués, par exemple impliquant des règles construites par des eval
instructions, il faudrait écrire quelque chose de proche d'un émulateur Make. Pas pratique.
Pour voir les cibles des règles simples, vous pouvez écrire un makefile qui agirait comme un scanner de makefile, fonctionnant sur un makefile arbitraire:
- Obtenez tous les noms de cible du makefile en utilisant sed.
- `include` le makefile afin de l'utiliser pour développer des variables.
- Utilisez `show_%:; echo $$ * `pour imprimer toutes les cibles
Ce serait un travail impressionnant. Êtes-vous sûr que l'objectif en vaut la peine?