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
假设以下 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