写一个makefile用于编译c语言,而且会自动查找c语言所需要的头文件和源文件
时间: 2024-03-19 14:46:18 浏览: 71
好的,以下是一个简单的makefile示例,用于编译名为"main.c"的C语言文件并自动查找所需的头文件和源文件:
```makefile
CC=gcc
CFLAGS=-Wall -Wextra -Wpedantic
LDFLAGS=
SRCDIR=src
OBJDIR=obj
BINDIR=bin
SOURCES=$(wildcard $(SRCDIR)/*.c)
OBJECTS=$(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
EXECUTABLE=$(BINDIR)/program
.PHONY: all clean
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $^ -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(EXECUTABLE) $(OBJECTS)
```
这个makefile中的关键部分是:
- `SRCDIR`:源文件所在的目录
- `OBJDIR`:编译后的目标文件所在的目录
- `BINDIR`:生成可执行文件所在的目录
- `SOURCES`:使用`wildcard`函数查找`SRCDIR`中的所有`.c`文件
- `OBJECTS`:使用`patsubst`函数将`SOURCES`中的`.c`文件替换为`.o`文件,并将路径替换为`OBJDIR`
- `$(OBJDIR)/%.o: $(SRCDIR)/%.c`:生成目标文件的规则,会自动查找所需的头文件和源文件并进行编译
你只需要在终端中`cd`到包含该makefile的目录并执行`make`命令,就可以自动编译生成可执行文件了。
阅读全文