搜索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
文章里说了使用
.PHONY
的原因,看这条其实,如果项目工作目录下没有与你的目标同名的文件时,不使用
.PHONY
指定伪目标也是OK的,使用它是为了避免出现同名文件而产生冲突。比如这里的all
,只要项目工作目录下不包含 all 这个文件,那么加不加到.PHONY
中都是没问题的。