关闭

make笔记

1148人阅读 评论(0) 收藏 举报

规则:. 1

目标(target):. 1

缺省最终目标... 1

假想目标... 1

命令... 2

依赖... 2

没有命令或依赖的规则... 2

 

规则:

规则形式如下:

targets : prerequisites

        command

        ...

或:

targets : prerequisites ; command

        command

        ...

目标(target:

是文件的名称,中间由空格隔开。通配符可以在文件名中使用(参阅在文件名中使用通配符),‘am)’形式的文件名表示成员m在文件a中(参阅档案成员目标)。一般情况下,一条规则只有一个目标,但偶尔由于其它原因一条规则有多个目标(参阅具有多个目标的规则)。

缺省最终目标

缺省最终目标是makefile文件中的第一条规则的目标。如果第一条规则有多个目标,只有第一个目标被认为是缺省最终目标。有两种例外的情况:以句点(‘.’)开始的目标不是缺省最终目标(如果该目标包含一个或多个斜杠‘/’,则该目标也可能是缺省最终目标);另一种情况是格式规则定义的目标不是缺省最终目标

假想目标

假想目标的名称前带‘.’。假想目标并不是一个真正的文件名,它仅仅是您制定的一个具体规则所执行的一些命令的名称。使用假想目标有两个原因:避免和具有相同名称的文件冲突和改善性能。

命令

行以Tab字符开始,第一个命令可以和依赖在一行,命令和依赖之间用分号隔开,也可以在依赖下一行,以Tab字符为行的开始。这两种方法的效果一样。

依赖

也由文件名构成,文件名之间由空格隔开,通配符和档案成员也允许在依赖中出现。

没有命令或依赖的规则

如果一个规则没有依赖、也没有命令,而且这个规则的目标也不是一个存在的文件,则make认为只要该规则运行,该目标就已被更新。这意味着,所有以这种规则的目标为依赖的目标,它们的命令将总被执行。这里举一个例子:

clean: FORCE

        rm $(objects)

FORCE:

这里的目标‘FORCR’满足上面的特殊条件,所以以其为依赖的目标‘clean’将总强制它的命令执行。关于‘FORCR’的名字没有特别的要求,但‘FORCR’是习惯使用的名字。

也许您已经明白,使用‘FORCR’的方法和使用假想目标(.PHONY: clean)的结果一样,但使用假想目标更具体更灵活有效,由于一些别的版本的make不支持假想目标,所以‘FORCR’出现在许多makefile文件中。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1561979次
    • 积分:14174
    • 等级:
    • 排名:第863名
    • 原创:226篇
    • 转载:88篇
    • 译文:2篇
    • 评论:147条
    文章分类
    文章存档
    最新评论