makefile 伪目标疑问

oHelloWorldo
  • 212

搜索makefile伪目标,看到一篇文章,文章链接
作者讲了伪目标的话要这么写:
.PHONY: clean
clean:
可是在这个例子中.PHONY:all确写在了all后面,这个例子中我们不降all声明为伪目标也没问题呀?比如我make就默认make all,然后prog1 prog2 prog3各自的依赖去执行。那么为什么要将all声明为PHONY,并且在all:prog1 prog2 prog3前后有无关系?

有没有相应的例子,可以去熟悉与使用make的用法?

#sample Makefile 
all : prog1 prog2 prog3 
.PHONY : all 
prog1 : prog1.o utils.o 
cc -o prog1 prog1.o utils.o 
prog2 : prog2.o 
cc -o prog2 prog2.o 
prog3 : prog3.o sort.o utils.o 
cc -o prog3 prog3.o sort.o utils.o 
评论
阅读 1.1k
1 个回答
✓ 已被采纳

文章里说了使用 .PHONY 的原因,看这条

避免在我们的Makefile中定义的只执行命令的的目标(此目标的目的为了执行执行一系列命令,而不需要创建这个目标)和工作目录下的实际文件出现名字冲突

其实,如果项目工作目录下没有与你的目标同名的文件时,不使用 .PHONY 指定伪目标也是OK的,使用它是为了避免出现同名文件而产生冲突。比如这里的 all,只要项目工作目录下不包含 all 这个文件,那么加不加到 .PHONY 中都是没问题的。

撰写回答

登录后参与交流、获取后续更新提醒

宣传栏