Makefile双冒号规则

当一个目标出现在多个规则中时,即一个目标被定义多次,Makefile的处理是合并它们的依赖,用最后一个规则中的命令;当你想要目标根据不通的依赖做不通的动作时,双冒号规则就派上用常了. 另外一个目标不能同时出现的双冒号和单冒号规则中;多说无用,举例如下:

Makefile双冒号规则
当 make single时,假如当前目录无a.c和b.c,打印如下:
Makefile双冒号规则
首先是warning,一个目标出现在了多个规则中,配方方法配替换为最后一个;其次我们看到a.c被touch,说明依赖是合并的,最后看到a.c的删除未执行,说明被后面的替换掉了;

下面来看make double的情况,如下图
Makefile双冒号规则
当a.c b.c不存在时,同一个taget在两条双冒号规则中都得到了执行;