是的,在一个 Makefile 中,可以有多个 .PHONY
目标。这是 Makefile 的一个特性,允许您声明多个目标为伪目标(phony targets),即这些目标并不对应于实际的文件,而是用于执行特定的命令或操作。
使用 .PHONY
当您将目标声明为 .PHONY
时,Make 在每次执行时都会执行这些目标的规则,而不会检查是否存在同名的文件。这在常见操作如清理(clean
)、构建(build
)、安装(install
)等时非常有用。
示例
以下是一个包含多个 .PHONY
目标的 Makefile 示例:
# 编译器
CC = gcc# 源文件和目标
SRC = main.c utils.c
TARGET = my_program# 默认目标
all: $(TARGET)# 生成目标文件的规则
$(TARGET): $(SRC)$(CC) $(SRC) -o $(TARGET)# 清理目标
clean:rm -f $(TARGET)# 安装目标
install:cp $(TARGET) /usr/local/bin/# 测试目标
test:./run_tests.sh# 声明多个伪目标
.PHONY: all clean install test
解释
-
多个
.PHONY
目标:- 在这个例子中,
clean
、install
和test
被声明为伪目标,确保无论文件系统中是否存在同名文件,每次调用这些目标时都会执行相应的命令。
- 在这个例子中,
-
如何使用:
- 运行
make
命令时会默认调用all
目标。 - 运行
make clean
将删除生成的可执行文件。 - 运行
make install
将可执行文件复制到/usr/local/bin/
。 - 运行
make test
将执行测试脚本。
- 运行
总结
在 Makefile 中,您可以根据需要定义多个 .PHONY
目标。这样可以确保每次运行 make
来调用这些目标时,他们的命令都会被执行,而不受文件状态的影响。这增加了 Makefile 的灵活性和可用性。