我想从名单列表中构建一组可执行文件或库。它们都以相同的方式构建,基本上需要两个以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文本函数,但失败了。
可以这样做吗?
答案 0 :(得分:1)
看起来模式规则是可行的方法:
Xs=a b c
default: $(patsubst %,%.exe,$(Xs))
%.exe : %.o %_y.o
$(CC) -o $@ $^
模式规则的先决条件可以多次使用%
。
请注意,您无需使用foreach
。只需告诉make
您要构建的所有目标。