makefile 编辑c语言多个头文件
时间: 2023-09-14 17:08:37 浏览: 163
使用makefile编译多个.c文件例子
假设我们有以下文件:
- main.c:主函数所在的文件
- foo.h:foo模块的头文件
- foo.c:foo模块的源文件
- bar.h:bar模块的头文件
- bar.c:bar模块的源文件
我们可以使用以下Makefile来编译这些文件:
```makefile
CC = gcc
CFLAGS = -Wall -Wextra -Werror -I.
SRCS = main.c foo.c bar.c
OBJS = $(SRCS:.c=.o)
all: myprogram
myprogram: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) myprogram
```
在这个Makefile中,我们首先定义了一些变量:
- `CC`:编译器的名称
- `CFLAGS`:编译选项,包括警告和错误信息,以及头文件的搜索路径(这里只有当前目录)
- `SRCS`:源文件的列表
- `OBJS`:目标文件的列表,通过把源文件的后缀名`.c`替换为`.o`得到
然后,我们定义了一个`all`目标,这是默认目标,它依赖于`myprogram`目标。`myprogram`目标依赖于`$(OBJS)`,也就是所有的目标文件,它们将被链接成一个可执行文件。我们使用`$^`来引用所有的依赖项,`$@`来引用当前目标的名称。
接下来,我们定义了一个模式规则,它告诉Make如何将`.c`文件编译成`.o`文件。`$<`表示当前依赖项的名称,也就是`.c`文件的名称。
最后,我们定义了一个`clean`目标,用于删除所有的目标文件和可执行文件。
阅读全文