Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81134
  • 博文数量: 15
  • 博客积分: 301
  • 博客等级: 二等列兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-07 13:51
个人简介

热爱户外运动,热爱Linux系统

文章分类

全部博文(15)

文章存档

2014年(1)

2013年(8)

2012年(6)

我的朋友

分类: LINUX

2014-04-06 19:19:06

target的状态可归纳如下:

    1. 无效态:
        a: 过期。
    2. 有效态:
        a: 最新
        b: 更新  (过期target重建成功之后的状态) 

显然,处于无效态的target需要重建!成功重建后的状态由“过期“转换为”更新“

如何判断target是否需要重建:

    1. 名为target的文件不存在。
    2. 名为target的文件非最新。

以上两点,只要满足其中一点,target就需要重建。

特别注意:
    当target重建成功(重建成功是指:成功执行了target对应的recipe)后,make
    就把target的状态置为“更新”,但不会对此结果做验证(验证是指:1. 名为
    target的文件确已存在?2. 名为target的文件确为最新?),之所以不做验证,
    是因为,recipe负责重建target的任务,而recipe具体做了哪些动作,make根本
    不管,这完全由用户决定,make 只管 recipe有没有成功执行;有时,recipe根
    本就不会生成target文件,故,只要成功执行了recipe,  make就认为target已经
    是”更新“态。当recipe执行失败时,make会把已有的target删除,防止”病态“的
    target(时间戳是最新,但实质上是有问题的target,当下次执行make时,因target
    已是最新,不会重建,由此而很可能引入莫名其妙的问题)出现。
    
从target的角度讲,make的作用是维系其处于有效态,而makefile中有那么多的target,
每一个都要make去维系吗?不是的,默认地,make只维系default target的状态。

如何确定哪一个是default target?

makefile中第一个target, 则为default target (暂且这么认为)
阅读(1055) | 评论(0) | 转发(0) |
0

上一篇:组合数与排列数

下一篇:没有了

给主人留下些什么吧!~~