Конечно, но когда вы хотите, чтобы он их выплевывал?
Чтобы сообщить имя цели при запуске правила, вставьте в правило строку:
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
...
РЕДАКТИРОВАТЬ:
Вы хотите, чтобы показать все возможные цели произвольного make-файла, что, я полагаю, означает не навязчиво.Ну ...
Чтобы сделать это точно и уметь справляться со сложными make-файлами, например, с использованием правил, созданных с помощью операторов eval
, вам нужно написать что-то похожее на эмулятор Make.Непрактично.
Чтобы увидеть цели простых правил, вы можете написать make-файл, который будет действовать как сканер make-файлов, работающий с произвольным make-файлом:
- Получить все имена целейиз make-файла, используя sed.
- `include` make-файл, чтобы использовать его для расширения переменных.
- Использовать `show_%:;эхо $$ * `напечатать все цели
Это было бы впечатляющим произведением.Вы уверены, что цель стоит усилий?