伪目标的引入

本文详细解析了Makefile中的目标概念,介绍了伪目标(.PHONY)的使用,包括其声明方式、本质和在规则调用中的应用。通过实例演示了如何利用伪目标模拟函数调用,提升Makefile的灵活性。

伪目标的引入

1、思考

​ makefile中的目标究竟是什么?

2、默认情况下

  • make认为目标对应着一个文件
  • make比较目标文件和依赖文件的新旧关系,决定是否执行命令
  • make以文件处理作为第一优先级

3、下面的代码有什么意义?

clean:
	rm *.o hello.out

4、编程实验

hello.out all : fun.o main.o
	gcc -o hello.out fun.o main.o
	
fun.o : fun.c
	gcc -o fun.o -c fun.c
	
main.o : main.c
	gcc -o main.o -c main.c
	
clean :
	rm *.o hello.out

5、makefile中的伪目标

  • 通过**.PHONY关**键字声明一个目标
  • 伪目标不对应任何实际的文件
  • 不管伪目标的依赖是否更新,命令总是执行

6、伪目标的引入

  • 伪目标的语法:先声明,后使用

本质:伪目标make中特殊目标.PHONLY的依赖


.PHONLY:clean
##注释##
clean:
	rm *.o hello.out

7、伪目标的妙用:规则调用(函数调用)

.PHONY : clean rebuild all

## other rules##

rebuild : clean all

clean:
	rm *.o hello.out

原理:

当一个目标的依赖包含伪目标时,伪目标所定义的命令总是会被执行。


8、技巧:绕开.PHONY关键字定义伪目标


原理:

如果一个规则没有命令或者依赖,并且他的目标不是一个存在的文件名;在执行此规则时,目标总会被认为是最新的。


hello.out : fun.o main.o
	gcc -o hello.out fun.o main.o
	
fun.o : fun.c
	gcc -o fun.o -c fun.c
	
main.o : main.c
	gcc -o main.o -c main.c
	
clean : FORCE
	rm *.o hello.out

FORCE :

9、小结

  • 默认情况下,make认为目标对应着一个文件
  • .PHONLY用于声明一个伪目标,伪目标不对应实际的文件
  • 伪目标的本质是make中特殊目标.PHONLY的依赖
  • 使用伪目标可以模拟“函数调用”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值