Ce sont des double-points de règles dans un fichier Makefile?

Section 4.13 de la GNU Make manuel décrit les soi-disant double deux-points de règles:

Double deux-points de règles sont des règles écrites avec ‘::’ au lieu de ‘:’ après les noms de cible. Ils sont gérés différemment de règles ordinaires lorsque la même cible apparaît dans plus d'une règle.

Quand une cible apparaît dans de multiples règles, toutes les règles doivent être du même type: tous les ordinaires, ou tous à double deux-points. Si ils sont un double deux-points, chacun d'eux est indépendant des autres. Chaque double deux-points de la règle commandes sont exécutées si la cible est plus ancienne que toutes les conditions préalables de cette règle. Si il n'y a pas de conditions préalables pour que la règle, ses commandes sont toujours exécutées (même si la cible existe déjà). Cela peut entraîner l'exécution d'aucune, une ou la totalité de la double-virgule règles.

Double deux-points des règles avec le même objectif sont en fait complètement séparés l'un de l'autre. Chaque double-virgule règle est traitée individuellement, tout comme les règles avec des objectifs différents sont traités.

Le double deux-points de règles pour une cible sont exécutées dans l'ordre où ils apparaissent dans le fichier makefile. Cependant, les cas où la double-virgule règles de la logique sont ceux où l'ordre d'exécuter les commandes n'aurait pas d'importance.

Double deux-points de règles sont un peu obscures et pas souvent très utiles; ils fournissent un mécanisme pour les cas dans lesquels la méthode utilisée pour mettre à jour une cible diffère selon lequel les fichiers de configuration requise causé la mise à jour, et de tels cas sont rares.

Chaque double deux-points de la règle de spécifier des commandes; si ce n'est pas le cas, une règle implicite sera utilisé si l'on s'applique. Voir la section à l'Aide de Règles Implicites.

J'ai un peu grok le sens de chaque phrase de cette section individuellement, mais c'est toujours pas clair pour moi ce double deux-points des règles sont pour. Pour ce qui est rare, je n'ai pas encore vu de tout projet open source dont le Makefile n'a pas commencer avec

all::

Donc: Quel est le but d'un double deux-points des règles dans les Makefiles?

  • L'une des raisons pour avoir all:: à l'avant: Il fait all la cible par défaut. Une alternative est d'utiliser .DEFAULT_GOAL = all à l'avant, mais qui nécessite un système avec la version 3.81. Il y a beaucoup d'ordinateurs Unix dont make est GNU make âgés de plus de 3.81, ou quelque autre qui prend en charge deux points de règles.
InformationsquelleAutor lindelof | 2011-10-25