Когда я везде ищу простую вещь и не могу ее найти, у меня возникает вопрос, делаю ли я что-то совершенно неправильно.Я использовал фреймворки, в которых вы набираете make targetname
, где make-файл не знает targetname
, поэтому он должен выбрать targetname
в качестве переменной make-файла и выяснить ее зависимости оттуда.Я пытаюсь это сделать, но я не могу понять, как, и, видимо, никто не делает этого, потому что я не могу найти никого, кто бы говорил о том, как это сделать.Они говорят обо всем остальном под солнцем, но не о том, как заставить make hooplah
выполнить, используя hooplah.html
в качестве цели верхнего уровня.
Множество поисков и догадок дало мне понять, насколько неудачныMakefile ниже, и я так расстроен, что здесь я рискую жизнью и здоровьем, задавая вопрос о SO.В случае, если это спасет меня от вреда, я упомяну, что я прочитал этот ТАК ответ и это , это и это , а также копать число из страниц в документации по make-файлу GNU, все безрезультатно.
Я хочувведите make page-72
в командной строке и заставьте make воспринимать page-72.html
как его зависимость верхнего уровня в make-файле, а не только в правиле верхнего уровня.Другие правила должны знать о page-72.html
, но я не могу понять, как дать им информацию.
Я читал о MAKECMDGOALS
, но похоже, что это полезно только для проверкиконкретные целевые имена;Я ищу что-то, что позволит любое имя цели и рассматривать его как выходное имя файла.Ниже то, что у меня есть.Он показывает мне page-72
из-за цели %
, и зависимость $@.html
работает, но ни одна переменная, которую я нашел, не позволяет правилу $@.html
знать имя цели, которое было указано в командной строке.
%: $@.html
@echo "Top: dollar-at = $@"
$@.html:
@echo "html: $@, $%, $<, $?, $^, $+, $|, $*"
Я получаю следующий вывод:
html: .html, , , , , , ,
Top: dollar-at = makefile
Top: dollar-at = index
Я неправильно понимаю это?Разве это не так?Бонусные баллы, если кто-нибудь может помочь мне избавиться от Top: dollar-at = makefile
.Приветствия