Makefile中相应的依赖项和目标列表

时间:2014-04-26 03:13:14

标签: makefile

在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

2 个答案:

答案 0 :(得分:1)

您可以使用substitution references

OBJS = $(SRC:.c=.o)

patsubst

OBJS = $(patsubst %.c,%.o,$(SRC))

答案 1 :(得分:1)

我认为问题是如何为每个目标创建规则,而不是如何从OBJS创建SRC(虽然这样做很好!)。

最简单的方法是在make中使用已经内置的规则知道如何操作;你不需要自己写。只需使用:

all: $(OBJS)

他们都会被创造出来。您可以通过设置CC变量来控制编译器,通过设置CPPFLAGS变量来设置预处理器标志,通过设置CFLAGS变量来控制其他编译器标志。

如果您确实想要编写自己的规则,那么模式规则将为您轻松完成:

%.o : %.c
        $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<