如何使用makefile中的后缀规则将源c文件转换为相应的.o文件?

时间:2015-07-13 13:09:57

标签: makefile

假设我们有a.c b.c c.c。所以make文件会喜欢这个

app:  a.o b.o c.o 
    gcc  -o app.o a.o b.o c.o

a.o:   a.c
    gcc  -c  a.c

b.o:    b.c
    gcc  -c  b.c

c.o:   c.c
    gcc -c c.c

将来可能会添加更多C文件。因此,我需要为每个.o文件制定.c个扩展名的目标。我了解了使用.source-extension.target-extension的suffix rules。但我可以理解如何在make文件中使用此后缀规则。请提供包含在make文件中的命令,请描述语法。我是makefile的新手。

2 个答案:

答案 0 :(得分:1)

您可以使用以下makefile。

app:  a.o b.o c.o 
    gcc -o $@ $^

a.o : a.h
b.o : b.h
c.o : c.h

%.o: %.c
    gcc -c $<

其中$@target(app)$^是依赖项列表,$<是要编译为c的相应object文件文件

答案 1 :(得分:0)

下面是用于编译c代码的示例makefile。

TARGET = a.out
SRCS = a.c b.c c.c
OBJS = $(SRCS:.c=.o)

CFLAGS = -g -ggdb -O2 -Wall -Werror

CC = gcc
RM = rm

.PHONY: all clean

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

$(TARGET) : $(OBJS)
    $(CC) $^ -o $@

clean:
    $(RM) *.o
    $(RM) $(TARGET)