makefile 伪目标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile 伪目标相关的知识,希望对你有一定的参考价值。

1. makefile的伪目标的目的不是去创建文件,而仅仅通过make指定目标来执行一些特定系统命令或其依赖为目标的规则(如all),称为伪目标。

  当clean 不是伪目标的时候,第一次执行会生成clean文件,并且目标下的清除命令会被执行,但是第二次执行时则不会执行,因为当前产生了clean文件。

2伪目标的另一种使用场合时在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 [email protected]

一般情况下,一个伪目标不作为另一个目标的依赖。当一个伪目标没有作为任何目标的依赖时,我们只能通过make命令来明确指定它为make的终极目标,来执行它所在规则所定义的命令。

还有一个特别的伪目标——all,如果我们在一个目录下创建多个可执行程序,我们可以将所有程序的重建规则在一个makefile中描述。

all: p1 p2 p3
        p1:p1.c
        p2:p2.c
        p3:p3.c

 

以上是关于makefile 伪目标的主要内容,如果未能解决你的问题,请参考以下文章

Makefile 文件格式;makefile伪目标

makefile 伪目标

Makefile第五课:Makefile介绍

第3课 - makefile伪目标的引入

linux之Makefile 编写规则伪目标

Makefile学习