伪目标的引入
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的依赖
- 使用伪目标可以模拟“函数调用”
本文详细解析了Makefile中的目标概念,介绍了伪目标(.PHONY)的使用,包括其声明方式、本质和在规则调用中的应用。通过实例演示了如何利用伪目标模拟函数调用,提升Makefile的灵活性。
515

被折叠的 条评论
为什么被折叠?



