三. Makefile中.PONHY 的理解和使用

在makefile中,.PHONY关键字用于定义伪目标,使得相关命令总能执行,不受同名文件影响。例如,clean目标通常用于清理编译产生的文件,.PHONY:clean确保这个命令始终运行,即使存在名为clean的文件或目录。
摘要由CSDN通过智能技术生成

1. 为什么需要 .PONHY

make以文件处理作为第一优先级,make认为目标对应着一个文件。当目标文件存在且时间戳很新的时候命令便不会执行。
但有时候我们是希望命令总是执行的,考虑如下规则:

clean : 
	rm *.o *.elf

目标是清楚编译生成的目标文件, 我们希望在执行 make clean 时命令总是会执行。但因为目标对应着一个文件,所以当工作目录下有一个名为 clean的文件或文件夹,命令便不会执行,所以make引入了 .PONHY关键字来解决这个问题。

2. 定义

经过 .PONHY关键字修饰的目标不再对应 真实的文件,故称之为伪目标

注:伪目标和真实的文件没有联系,所以即使工作目录下存在于伪目标同名的文件命令也会无条件执行。

2. .PONHY的使用

示例如下:

# 经.PHONY修饰, rebuild clean all成为伪目标,不再与真实的文件对应,作为目标时,命令总是会被执行
.PHONY : rebuild clean all	

hello.out : func.o main.o
	gcc -o hello.out func.o main.o
func.o : func.c
	gcc -o func.o -c func.c
main.o : main.c
	gcc -o main.o -c main.c
	
all : hello.out

clean :
	rm *.o hello.out
	
rebuild : clean all


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值