如何从Makefile中的名称列表创建多个可执行文件或库

时间:2013-06-26 07:23:30

标签: build makefile

我想从名单列表中构建一组可执行文件或库。它们都以相同的方式构建,基本上需要两个以lexiograhically连接的文件:

X.exe : X.o X_y.o
    $(CC) -o $@ $^

在我的makefile中,我想只列出我的所有X:s并自动构建所有.exe文件。所以来自

Xs : a b c

我希望Makefile像我编写规则一样执行

a.exe : a.o a_y.o
b.exe : b.o b_y.o
c.exe : c.o c_y.o

当然这是为了简化添加另一个X.

我的基本问题似乎是上面Xs的定义是一组名称,我需要将其分解为单独的规则。我知道模式,并尝试使用foreach文本函数,但失败了。

可以这样做吗?

1 个答案:

答案 0 :(得分:1)

看起来模式规则是可行的方法:

Xs=a b c

default: $(patsubst %,%.exe,$(Xs))

%.exe : %.o %_y.o
    $(CC) -o $@ $^

模式规则的先决条件可以多次使用%

请注意,您无需使用foreach。只需告诉make您要构建的所有目标。