У меня есть довольно большой make-файл, который создает много целей на лету путем вычислений имен из переменных. (например, foo$ (VAR): $ (PREREQS)). Есть ли какой-либо способ, которым гну делают, может быть убежден выложить список целей после того, как это развернуло эти переменные?
Я хотел бы смочь получить цели для aribitrary make-файла. Я пытаюсь записать функцию завершения для своей оболочки.
Конечно, но когда вы хотите, чтобы он их выплюнул?
Чтобы сообщать имя цели при выполнении правила, поместите в правило строку:
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:
Вы хотите способ показать все возможные цели произвольного makefile, что, я полагаю, означает не навязчиво. Ну...
Чтобы сделать это точно, и иметь возможность работать со сложными make-файлами, например, включающими правила, построенные с помощью eval
операторов, вам придется написать что-то близкое к эмулятору Make. Непрактично.
Чтобы увидеть цели простых правил, можно написать makefile, который будет действовать как сканер makefile, работая с произвольным makefile:
Это была бы впечатляющая работа. Вы уверены, что цель стоит затраченных усилий?