相关疑难解决方法(0)

Makefile中的双冒号规则是什么?

GNU Make手册的4.13节描述了所谓的双冒号规则:

双冒号规则是在目标名称后面用'::'而不是':'编写的规则.当同一目标出现在多个规则中时,它们的处理方式与普通规则不同.

当目标出现在多个规则中时,所有规则必须是相同的类型:所有规则或所有双冒号.如果它们是双冒号,则每个都是独立的.如果目标比该规则的任何先决条件更旧,则执行每个双冒号规则的命令.如果该规则没有先决条件,则始终执行其命令(即使目标已存在).这可能导致执行任何,任何或所有双冒号规则.

具有相同目标的双冒号规则实际上彼此完全分离.每个双冒号规则都是单独处理的,就像处理具有不同目标的规则一样.

目标的双冒号规则按它们在makefile中出现的顺序执行.但是,双冒号规则确实有意义的情况是执行命令的顺序无关紧要的情况.

双冒号规则有点模糊,通常不太有用; 它们为用于更新目标的方法根据导致更新的先决条件文件而不同的情况提供了一种机制,这种情况很少见.

每个双冒号规则应指定命令; 如果没有,则使用隐式规则(如果适用).请参阅使用隐式规则部分.

我有点单独理解本节每个句子的含义,但我仍然不清楚双冒号规则什么.至于是罕见的,我还没有看到任何的开源项目,其Makefile文件并没有开头

all::
Run Code Online (Sandbox Code Playgroud)

因此:Makefile中双冒号规则的目的是什么?

makefile gnu-make

31
推荐指数
4
解决办法
1万
查看次数

标签 统计

gnu-make ×1

makefile ×1