在Makefile中,常见的规则有以下几种:
1. 显式规则(Explicit Rule):指定一个或多个目标文件和依赖文件,并给出生成目标文件的命令。例如:
```makefile
target: dependencies
command
```
2. 隐式规则(Implicit Rule):根据文件名的后缀和一些约定规则,自动推导出生成目标文件的命令。例如,可以使用以下规则来生成目标文件 `foo.o`:
```makefile
%.o: %.c
command
```
3. 伪目标规则(Phony Rule):定义一个不对应任何实际文件的目标,用于执行一些特定的动作。例如:
```makefile
.PHONY: target
target:
command
```
4. 文件搜索路径规则(VPATH Rule):指定搜索依赖文件时的搜索路径。例如:
```makefile
VPATH = src include
```
5. 模式规则(Pattern Rule):类似于隐式规则,可以根据文件名的模式匹配来生成目标文件。例如:
```makefile
%.o: %.c
command
```
6. 条件规则(Conditional Rule):根据条件来决定是否执行某个规则。例如:
```makefile
ifeq ($(condition),true)
target: dependencies
command
endif
```
7. 函数规则(Function Rule):使用Makefile中提供的函数来生成目标文件的命令。例如:
```makefile
target: $(function arguments)
command
```
以上是一些常见的Makefile编写规则,它们可以帮助我们定义和控制程序的编译和构建过程。