使用 makefile 编译多个 .c 文件

标签 c makefile

我想使用 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/

相关文章:

c - make 找不到 make 目标的规则(手动生成 makefile 的新手)

docker - uvicorn 上的 FastApi 运行良好,但无法与 Docker 和 docker-compose 配合使用

c++ - gcc/clang 是否有可能在剥离所有调试信息的同时链接到可执行文件?

c - 指向数组解引用的指针

python - 从源代码安装Python 3.1.2,如何解决sqlite3-dev依赖关系?

c - 我的 C 生成文件有什么问题?

c - makefile C 奇怪的 bash 命令行为

c - 获取 “field has incomplete type” 和 "conflicting types"

c - 超出时间限制错误。这是什么意思?

c - 使用 mmap 的共享变量导致分段违规 (SIGSEGV)