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

Build 如何从Makefile中的名称列表创建多个可执行文件或库,build,makefile,Build,Makefile,我想从名称列表中构建一组可执行文件或库。它们都以相同的方式构建,基本上需要两个在逻辑上连接的文件: 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的定义

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

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文本函数,但失败了


这可以做到吗?

看来模式规则是一条可行之路:

Xs=a b c

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

%.exe : %.o %_y.o
    $(CC) -o $@ $^
模式规则的先决条件可以多次使用
%


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

看起来模式规则是一种方法:

Xs=a b c

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

%.exe : %.o %_y.o
    $(CC) -o $@ $^
模式规则的先决条件可以多次使用
%

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