码迷,mamicode.com
首页 > 其他好文 > 详细

makefile 伪目标

时间:2017-10-10 13:16:19      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:并行处理   处理   情况下   系统   清除   生成   二次   例子   for   

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 $@

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

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

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

 

makefile 伪目标

标签:并行处理   处理   情况下   系统   清除   生成   二次   例子   for   

原文地址:http://www.cnblogs.com/voya/p/7644766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!