假设我们有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的新手。
答案 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)