1

我想从名称列表中构建一组可执行文件或库。它们都以相同的方式构建,并且基本上需要两个按字典顺序连接的文件:

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 文本功能,但失败了。

这可以做到吗?

4

1 回答 1

1

看起来模式规则是要走的路:

Xs=a b c

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

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

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

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

于 2013-06-26T07:30:57.970 回答