Makefile patsubst替换模式中的多个occcurence

时间:2014-05-09 12:18:59

标签: makefile

我有3个目录,想要将可执行文件链接到库

我已经有了目录列表:

DIRS=Math Graph Test

我想得到像这样的图书馆列表:

LIBS=Math/libMath.a Graph/libGraph.a Test/libTest.a

如果我使用它:

$(DIRS:%=%/%.a)

我明白了:

Math/%.a Graph/%.a Test/%.a

GNU Makefile说:

  

模式和替换中只有第一个'%'以这种方式处理; 任何后续'%'不变

这里我需要更换2次,而不仅仅是第一次。

2 个答案:

答案 0 :(得分:4)

您必须使用循环:

LIBS := $(foreach D,$(DIRS),$D/lib$D.a)

答案 1 :(得分:1)

最终我用过:

LIBS:= $(join $(DIRS), $(DIRS:%=/lib%.a))