make: Double-Colon
1
1 4.13 Double-Colon Rules
1 =======================
1
1 "Double-colon" rules are explicit rules written with '::' instead of ':'
1 after the target names. They are handled differently from ordinary
1 rules when the same target appears in more than one rule. Pattern rules
11 with double-colons have an entirely different meaning (⇒
Match-Anything Rules).
1
1 When a target appears in multiple rules, all the rules must be the
1 same type: all ordinary, or all double-colon. If they are double-colon,
1 each of them is independent of the others. Each double-colon rule's
1 recipe is executed if the target is older than any prerequisites of that
1 rule. If there are no prerequisites for that rule, its recipe is always
1 executed (even if the target already exists). This can result in
1 executing none, any, or all of the double-colon rules.
1
1 Double-colon rules with the same target are in fact completely
1 separate from one another. Each double-colon rule is processed
1 individually, just as rules with different targets are processed.
1
1 The double-colon rules for a target are executed in the order they
1 appear in the makefile. However, the cases where double-colon rules
1 really make sense are those where the order of executing the recipes
1 would not matter.
1
1 Double-colon rules are somewhat obscure and not often very useful;
1 they provide a mechanism for cases in which the method used to update a
1 target differs depending on which prerequisite files caused the update,
1 and such cases are rare.
1
1 Each double-colon rule should specify a recipe; if it does not, an
11 implicit rule will be used if one applies. ⇒Using Implicit Rules
Implicit Rules.
1