makefile的用法
时间: 2023-08-05 07:14:28 浏览: 112
Makefile 是一个用于自动化编译程序的工具,它可以自动地根据文件之间的依赖关系来决定哪些文件需要重新编译。下面是一些 Makefile 的用法:
1. 基本语法
Makefile 的基本语法是由一系列规则组成的。每个规则包含一个目标文件、一组依赖文件以及一条命令,用于指定如何生成目标文件。例如:
```
target: dependencies
command
```
其中,`target` 表示目标文件的名称,`dependencies` 表示依赖文件的列表,`command` 表示生成目标文件的命令。
2. 变量的使用
在 Makefile 中可以定义变量来简化代码,例如:
```
CC = gcc
CFLAGS = -Wall -O2
target: dependencies
$(CC) $(CFLAGS) -o target dependencies
```
其中,`CC` 表示编译器的名称,`CFLAGS` 表示编译选项。在命令中可以使用 `$()` 来引用变量。
3. 自动变量的使用
Makefile 中还有一些特殊的变量,如 `$@` 表示当前规则的目标文件名,`$<` 表示当前规则的第一个依赖文件名,`$^` 表示当前规则的所有依赖文件名。例如:
```
CC = gcc
CFLAGS = -Wall -O2
target: file1.o file2.o
$(CC) $(CFLAGS) -o $@ $^
file1.o: file1.c
$(CC) $(CFLAGS) -c $<
file2.o: file2.c
$(CC) $(CFLAGS) -c $<
```
其中,`$@` 表示 `target`,`$^` 表示 `file1.o file2.o`,`$<` 分别表示 `file1.c` 和 `file2.c`。
4. 隐式规则的使用
Makefile 中还有一些隐式规则,用于自动推导目标文件的生成方式。例如,如果存在 `file.c` 文件,则可以使用以下规则自动生成 `file.o`:
```
file.o: file.c
$(CC) $(CFLAGS) -c $<
```
5. 包含其他 Makefile
在 Makefile 中可以使用 `include` 命令包含其他 Makefile。例如:
```
include common.mk
target: dependencies
$(CC) $(CFLAGS) -o target dependencies
```
其中,`common.mk` 是另一个 Makefile 文件的名称。
阅读全文