在makefile中,假设我有两个相应的依赖项和目标列表,如下所示:
SRC = x.c y.c z.c
OBJS = x.o y.o z.o
当然,我的例子比这更复杂,但我想知道是否可以分别根据x.c,y.c,z.c自动创建目标x.o,y.o,z.o,如下所示:
x.o: x.c
y.o: y.c
z.o: z.c
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为问题是如何为每个目标创建规则,而不是如何从OBJS
创建SRC
(虽然这样做很好!)。
最简单的方法是在make中使用已经内置的规则知道如何操作;你不需要自己写。只需使用:
all: $(OBJS)
他们都会被创造出来。您可以通过设置CC
变量来控制编译器,通过设置CPPFLAGS
变量来设置预处理器标志,通过设置CFLAGS
变量来控制其他编译器标志。
如果您确实想要编写自己的规则,那么模式规则将为您轻松完成:
%.o : %.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<