我想使用 makefile 一次编译多个 .c 文件。 我已经做了这个:
CC= gcc
CPPFLAGS = -I.
CFLAGS = -W -Wall -ansi -pedantic
TARGET = test
RM = rm
OBJECTS = xxx.o yyy.o zzz.o
SOURCES = $(OBJECTS:.o =.c)
.PHONY: all clean
all: $(TAREGT)
clean:
$(RM) $(TARGET) $(OBJECTS)
$(TAREGT) : $(OBJECTS)
$(CC) $^ -o $@
$(OBJECTS) : $(SOURCES)
$(CC) $(CFLAGS) $(CPPFLAGS) -c $^
我不知道为什么这行不通(“对“所有人”无事可做”)。有人有想法吗?
最佳答案
这一行创建了一个循环依赖:
SOURCES = $(OBJECTS:.o =.c)
尝试用这个替换它:
SOURCES = $(patsubst %.o,%.c,$(OBJECTS))
关于使用 makefile 编译多个 .c 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41921922/