欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Makefile的伪目标

发布时间:2025/6/17 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Makefile的伪目标 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、Makefile伪目标的格式:

.PHONY : clean
clean:rm xxxx

 

 

 

2、Makefile伪目标的作用:

第一种情况:

如果我们需要书写这样的一个规则:规则所定义的命令不是去创建目标文件,而是通过make命令行明确指定它来执行一些特点的命令,就像例题中的clean。当文件夹中没有clean这个文件的时候,我们输入“make clean”能按照初衷执行,但是一旦文件夹中出现clean文件,我们再次输入“make clean”,由于这个规则没有任何依赖文件,所以目标被认为是最新的而不去执行规则所定义的命令。所以rm命令不会被执行。为了解决问题,我们将目标clean定义成伪目标。

clean:rm xxxx

如果同一个目录下有一个clean文件,那么  make clean的动作将不会执行rm动作;

所以,增加.PHONY伪目标的使用的话,就会忽略目录下clean这个文件,直接执行rm动作;

 

 

第二种情况:

伪目标的另一种使用场合时在make的并行和递归执行过程中。

SUBDIRS=foo bar bazSubdirs:for dir in $(SUBDIRS)do$(MAKE) –C $$dirdone

 

如果这样写,会出现几个问题:

1、 当子目录执行make出现错误,make不会退出;

2、 使用这种shell的循环方式时,没有用到make对目录的并行处理功能。

有了伪目标就可以解决上面的两个问题。

SUBDIRS=foo bar baz.PHONY:subdirs $(SUBDIRS)subdirs: $(SUBDIRS)$(SUBDIRS):$(MAKE) –C $@

其中subdirs模板表示要编译多个子目录中的工程。

转载于:https://www.cnblogs.com/linhaostudy/p/7200629.html

总结

以上是生活随笔为你收集整理的Makefile的伪目标的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。