makefile编译多个c文件夹
时间: 2024-09-09 20:12:11 浏览: 41
Makefile是一种用于编译和构建程序的自动化工具,它使用一种名为make的程序来控制编译过程。在Makefile中,您可以定义一系列的规则来说明如何编译和链接程序中的各个文件。当您需要编译多个C源文件时,可以在Makefile中创建一个规则,指定如何将这些C文件编译成目标文件(.o),然后链接成最终的可执行文件。
以下是一个简单的Makefile示例,它展示了如何编译多个C源文件:
```makefile
# 定义编译器
CC=gcc
# 定义编译选项
CFLAGS=-Wall
# 定义目标可执行文件名
TARGET=your_program
# 定义源文件列表
SRCS=main.c utils.c math.c
# 定义目标文件列表,由源文件通过替换后缀得到
OBJS=$(SRCS:.c=.o)
# 默认目标
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)
# 每一个.c文件对应一个.o文件的规则
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理编译生成的文件
clean:
rm -f $(OBJS) $(TARGET)
# 声明伪目标
.PHONY: clean
```
在这个Makefile中:
- `CC` 变量定义了使用的编译器,这里使用的是 `gcc`。
- `CFLAGS` 变量定义了编译选项,这里使用的是 `-Wall` 来开启所有警告。
- `TARGET` 变量定义了最终生成的可执行文件名。
- `SRCS` 变量定义了源文件的列表。
- `OBJS` 变量通过替换 `.c` 后缀为 `.o` 来生成目标文件列表。
- 默认目标依赖于 `$(OBJS)`,当所有的 `.o` 文件是最新的,或者没有任何 `.c` 文件更改过,make命令默认执行的规则将不会执行任何操作。
- `%.o: %.c` 规则说明了如何将每个 `.c` 文件编译成对应的 `.o` 文件。
- `clean` 目标用于删除所有编译生成的文件,这是一个伪目标,因为它的名字不对应于一个实际的文件名。
- `.PHONY` 声明告诉make,`clean` 是一个伪目标,确保每次执行 `make clean` 都会运行。
使用这个Makefile,您可以简单地运行 `make` 命令来编译您的程序,或者使用 `make clean` 来清理编译生成的文件。
阅读全文