Makefile patsubst 在替换模式中多次出现

Rum*_*raK 4 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 个事件,而不仅仅是第一个。

Mad*_*ist 5

你必须使用一个循环:

LIBS := $(foreach D,$(DIRS),$D/lib$D.a)
Run Code Online (Sandbox Code Playgroud)


Rum*_*raK 2

最终我使用了:

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