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 baz
        Subdirs:
                for dir in $(SUBDIRS)
                do
                $(MAKE) –C $$dir
                done

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

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

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

运维请注意:”非常危险“的Linux命令大全

Linux命令是一种很有趣且有用的东西,但在你不知道会带来什么后果的时候,它又会显得非常危险。所以,在输入某些命令前,请多多检查再敲回车。 rm –rf rm...

2026
来自专栏用户2442861的专栏

Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件

http://blog.csdn.net/zhongnanjun_3/article/details/6312678

722
来自专栏cloudskyme

linux下的chmod,chown和chgrp

对于linux的权限掌握以下几个命令就可以非常熟练的操作系统中的各种权限了。 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--hel...

3509
来自专栏小李刀刀的专栏

[译]Laravel 5.0 之运行环境及环境变量

本文译自 Matt Stauffer 的系列文章. ---- 如果你关注我的博客有段时间了,那你应该曾经见过我在 Laravel 环境检测问题上的各种尝试,特别...

3476
来自专栏LEo的网络日志

shell技巧分享(三)

3118
来自专栏Java开发

nohup 和>/dev/null 2>&1

在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

703
来自专栏北京马哥教育

别人比你快?试一试这百个超有用的Linux命令行使用技巧

本文由马哥教育面授班25期学员推荐,转载自互联网,作者为lingcc,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 最近在问答社区上看...

2727
来自专栏Rovo89

Go基本安装

2824
来自专栏前端萌媛的成长之路

NPM基本介绍(一)

1462
来自专栏Java技术

Git的核心概念

文章内容来自自己的理解 和 https://git-scm.com/book/en/v2 。

784

扫码关注云+社区