先看makefile核心规则

1
2
target: prerequisites
command

make解析执行makefile判断过程:

  • target不存在,则根据prerequisites,执行commond
  • target已存在,则比较targetprerequisites修改时间
    • prerequisites不存在,则不执行commond!
    • prerequisitestarget新,则执行commond(说明在生成target后,对依赖文件进行了修改)
    • prerequisites没有target新,则不执行commond

为什么需要伪目标

  • 假设当前目录下已有clean文件,则根据make解析过程,不会执行后续commond

什么是伪目标(.PHONY)

伪目标相对于目标而言,其不会生成实体文件

伪目标的作用

显式告诉make不要跟实体文件进行关联判断,以便执行相应的命令

留言