makefile文件编写
时间: 2023-08-05 09:11:33 浏览: 41
Makefile 是一种文本文件,它包含了一系列规则用来告诉 make 工具如何编译和链接代码。Makefile 的主要作用是自动化构建过程,让开发人员不需要手动编译每个文件,而是通过一个简单的命令来完成整个项目的编译和构建。
下面是一个简单的 Makefile 文件示例:
```makefile
CC=gcc
CFLAGS=-Wall -O2 -g
all: program
program: main.o foo.o bar.o
$(CC) $(CFLAGS) $^ -o $@
main.o: main.c
$(CC) $(CFLAGS) -c $< -o $@
foo.o: foo.c
$(CC) $(CFLAGS) -c $< -o $@
bar.o: bar.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f *.o program
```
这个 Makefile 包含了三个目标,分别是 `all`、`program` 和 `clean`。其中,`all` 是一个伪目标,它依赖于 `program` 目标;`program` 目标依赖于三个目标文件 `main.o`、`foo.o` 和 `bar.o`;`clean` 目标用来清除所有目标文件和可执行文件。
下面是每个目标的具体规则:
- `all` 目标:如果执行 `make all` 命令,则会先执行 `program` 目标。
- `program` 目标:如果执行 `make program` 命令,则会根据 `main.o`、`foo.o` 和 `bar.o` 三个文件生成可执行文件 `program`。
- `main.o`、`foo.o` 和 `bar.o` 目标:分别根据对应的源文件生成目标文件。
- `clean` 目标:如果执行 `make clean` 命令,则会删除所有目标文件和可执行文件。
在 Makefile 文件中,可以使用变量来代替一些常用的命令和选项,这样可以方便地修改和管理。例如上面的例子中,`CC` 和 `CFLAGS` 分别代表编译器和编译选项,这些变量可以在整个 Makefile 文件中使用,并且可以根据需要进行修改。
Makefile 还支持条件语句、循环语句等高级语法,可以根据实际需求进行扩展。