Makefile:模式规则中的可参数化接收命令

Makefile: Parametrizable recepie command in pattern rule

假设以下 makefile

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

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

compile: $(outputs)

这按预期工作。

现在我想添加另一个名为(例如)upgrade 的目标,它应该做与 compile 相同的事情,但将其他选项传递给 some-command(可能取决于环境变量,但这超出了这个问题的范围)。

到目前为止,我发现的唯一 'solution' 是递归调用相同的 makefile 并通过 env 变量传递附加选项。但这似乎是一个非常丑陋的 hack。

我在 make 中追求的是可能的(GNU 很好,这不一定是可移植的)还是我只是以错误的方式解决这个问题?

Target-specific variable value:

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

compile: $(outputs)

upgrade: SOME_OPTIONS:=whatever
upgrade: compile