GNU Make with patsubst:需要两次替换

时间:2011-03-07 19:12:11

标签: makefile

我需要在替换变量替换时引用词干两次:

O23=$(OROOTS:%=$(ODIR)/overx-%2wk-%3wk.mlb)

我需要使用相同的词干执行两次替换,但替换使用patsubst,它只执行第一次。我们怎样才能完成两者?

3 个答案:

答案 0 :(得分:8)

事实上,杰克几乎是正确的 - foreach救援!无论如何我们知道完整的词干并将其粘贴到var中,foreach扩展了var的所有出现次数:

O23 := $(foreach root,$(OROOTS),$(ODIR)/overx-$(root)2wk-$(root)3wk.mlb)

无论如何,我会检查Beta的新视角。

答案 1 :(得分:4)

通过kludgery:

O23=$(join $(OROOTS:%=$(ODIR)/overx-%2wk), $(OROOTS:%=-%3wk.mlb))

答案 2 :(得分:0)

$(shell)

O23 := $(foreach O,$(OROOTS),$(shell echo '$(O)' | awk '{print "overx-"$$0"2wk-"$$0"3wk.mlb"}'))

我认为Beta的kludge可能更好,因为awk中的每个单词都不需要$(OROOTS)