解读makefile中的.PHONY

在 Makefile 中,.PHONY 是一个特殊的目标,用于声明伪目标(phony target)。伪目标是指并不代表实际构建结果的目标,而是用来触发特定动作或命令的标识。通常情况下,.PHONY 会被用来声明一组需要执行的动作,例如 clean、all 等,并告诉 Make 工具这些目标并不对应真实的文件,而只是动作的名称。

例如,下面是一个使用 .PHONY 的例子:

makefile

复制代码
.PHONY: clean

clean:
    rm -f *.o

在这个例子中,.PHONY 声明了 clean 是一个伪目标,它不代表一个真实的文件,而是用来触发清理操作的动作。当用户执行 make clean 时,Make 工具会执行 rm -f *.o 命令来删除所有的 .o 文件,即使没有真实的 clean 文件存在。

使用 .PHONY 声明伪目标可以避免因为存在同名文件而导致意外的行为,同时也能让 Make 工具知道这些目标并不对应真实文件,从而正确地执行相应的动作。

避免与同名文件产生冲突:如果存在一个与目标同名的文件,且用户误输入了该目标名字,Make 工具会尝试去构建这个同名文件,而不是执行我们期望的动作。通过将目标声明为伪目标,可以避免意外地触发同名文件的构建。

相关推荐
绝世唐门三哥6 分钟前
使用Intersection Observer js实现超出视口固定底部按钮
开发语言·前端·javascript
Ayu阿予14 分钟前
C++从源文件到可执行文件的过程
开发语言·c++
C++业余爱好者15 分钟前
JVM优化入门指南:JVM垃圾收集器(GC)介绍
java·开发语言·jvm
福尔摩斯张16 分钟前
基于C++的UDP网络通信系统设计与实现
linux·c语言·开发语言·网络·c++·tcp/ip·udp
Trouvaille ~21 分钟前
【Java篇】基石与蓝图::Object 类与抽象类的双重奏
java·开发语言·javase·抽象类·类与对象·基础入门·object类
hkNaruto21 分钟前
【规范】Linux平台C/C++程序版本发布调试规范手册 兼容银河麒麟
linux·c语言·c++
卜锦元23 分钟前
Golang中make()和new()的区别与作用?
开发语言·后端·golang
Light6033 分钟前
破局“数据孤岛”:构建业务、财务、指标三位一体的智能数据模型
java·大数据·开发语言
guygg8835 分钟前
基于Matlab的压缩感知信道估计算法实现
开发语言·算法·matlab
IMPYLH40 分钟前
Lua 的 warn 函数
java·开发语言·笔记·junit·lua