Sicher, aber wann soll es sie ausspucken?
Fügen Sie eine Zeile in die Regel ein, um den Namen des Ziels beim Ausführen der Regel zu melden:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
Um sie alle auf einmal auszuspucken, können Sie ein separates PHONY-Ziel erstellen:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
Und dies kann eine Voraussetzung für Ihr Standardziel sein:
all: show_vars
...
BEARBEITEN:
Sie möchten eine Möglichkeit, alle möglichen Ziele eines beliebigen Makefiles anzuzeigen, was vermutlich nicht aufdringlich bedeutet. Gut...
Um dies genau zu tun und mit anspruchsvollen Makefiles fertig zu werden, z. B. mit Regeln, die durch eval
Anweisungen erstellt wurden, müssten Sie etwas schreiben, das einem Make-Emulator nahe kommt. Unpraktisch.
Um die Ziele der einfachen Regeln zu sehen, können Sie ein Makefile schreiben, das als Makefile-Scanner fungiert und mit einem beliebigen Makefile arbeitet:
- Holen Sie sich mit sed alle Zielnamen aus dem Makefile.
- `make` das Makefile, um es zum Erweitern von Variablen zu verwenden.
- Verwenden Sie `show_% :; echo $$ * `, um alle Ziele zu drucken
Dies wäre eine beeindruckende Arbeit. Sind Sie sicher, dass das Ziel die Mühe wert ist?