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