Конечно, но когда вы хотите, чтобы он их выплюнул?
Чтобы сообщить имя цели при выполнении правила, поместите строку в правило:
foo$(VAR): $(PREREQS)
@echo now making the foo target: $@
do_other_stuff...
Чтобы выплюнуть их всех сразу, вы можете создать отдельную цель PHONY:
.PHONY: show_vars
show_vars:
@echo foo$(VAR)
@echo bar$(PARAM) blah$(FLAG)
# and so on
И это можно сделать предпосылкой для вашей цели по умолчанию:
all: show_vars
...
EDIT:
вам нужен способ показать все возможные цели произвольного make-файла, что, как я полагаю, означает ненавязчиво. Хорошо...
Чтобы сделать это точно и иметь возможность справляться со сложными make-файлами, например, с использованием правил, построенных с помощью eval
операторов, вам нужно будет написать что-то похожее на эмулятор Make. Непрактично.
Чтобы увидеть цели простых правил, вы можете написать make-файл, который будет действовать как сканер make-файла, работая с произвольным make-файлом:
- Получите все целевые имена из make-файла с помощью sed.
- `include` make-файл, чтобы использовать его для раскрытия переменных.
- Используйте `show_%:; echo $$ * `для печати всех целей
Это была бы впечатляющая работа. Вы уверены, что цель стоит затраченных усилий?