Makefile: Параметрируемая команда recepie в шаблонном правиле - PullRequest
0 голосов
/ 07 июня 2019

Предположим, что следующий make-файл

objects = $(wildcard *.in)
outputs := $(objects:.in=.txt)

%.txt: %.in
    some-command $@ $<

compile: $(outputs)

Это работает как ожидалось.

Теперь я хочу добавить еще одну цель с именем (например) upgrade, которая должна делать то же самое, что и compile, но передавать дополнительные параметры some-command (возможно, в зависимости от переменных среды, но это выходит за рамки этот вопрос).

Единственное найденное мной «решение» - это рекурсивный вызов того же make-файла и передача дополнительных опций через переменные env. Но это похоже на довольно уродливый хак.

Это то, что мне нужно в make (GNU хорошо, это не обязательно должно быть переносимо) или я просто ошибаюсь?

1 Ответ

1 голос
/ 07 июня 2019

Целевое значение переменной :

%.txt: %.in
    @echo some-command $(SOME_OPTIONS) $@ $<

compile: $(outputs)

upgrade: SOME_OPTIONS:=whatever
upgrade: compile
...