Was sind Doppel-Doppelpunkt-Regeln in einem Makefile für?

Abschnitt 4.13 von GNU Make Handbuch beschreibt die so genannte Doppel-Doppelpunkt-Regeln:

Doppel-Doppelpunkt-Regeln sind Regeln geschrieben mit":: "anstelle von": "nach der target-Namen. Sie werden anders behandelt, von den gewöhnlichen Regeln, wenn Sie das gleiche Ziel wird in mehr als einer Regel.

Wenn ein Ziel angezeigt wird, in mehrere Regeln, alle Regeln müssen vom selben Typ sein: alle normalen, oder alle Doppel-Doppelpunkt. Wenn Sie doppelklicken, Doppelpunkt, jedes von Ihnen ist von den anderen unabhängig. Jeder doppelten-Doppelpunkt-Regel-Befehle, die ausgeführt werden, wenn das Ziel ist älter als alle Voraussetzungen von dieser Regel. Wenn es gibt keine Voraussetzungen für diese Regel, seine Befehle werden immer ausgeführt (auch wenn das Ziel bereits vorhanden ist). Dadurch kann es bei der Ausführung keine, alle, oder alle von der Doppel-Doppelpunkt-Regeln.

Doppel-Doppelpunkt-Regeln mit dem gleichen Ziel sind in der Tat völlig voneinander getrennt. Jeder doppelten-Doppelpunkt-Regel wird einzeln verarbeitet, genauso wie Regeln mit unterschiedlichen Zielen bearbeitet werden.

Den Doppel-Doppelpunkt-Regeln für ein Ziel ausgeführt werden, in der Reihenfolge erscheinen Sie in der Datei makefile. Jedoch die Fälle, in denen Doppel-Doppelpunkt-Regeln wirklich Sinn machen sind die, wo die Reihenfolge der Ausführung der Befehle keine Rolle.

Doppel-Doppelpunkt-Regeln sind etwas unklar und oft nicht sehr nützlich; Sie bieten einen Mechanismus für die Fälle, in denen die Methode verwendet, um die update-ein Ziel unterscheidet sich je nachdem, welche Voraussetzung Dateien verursacht das update, und solche Fälle sind selten.

Jeder doppelten-Doppelpunkt-Regel sollte Befehle angeben; wenn nicht, wird eine implizite Regel wird verwendet, wenn gilt. Siehe Abschnitt Verwendung der Impliziten Regeln.

Ich irgendwie verstehen die Bedeutung jedes Satzes in diesem Abschnitt individuell, aber es ist immer noch nicht klar ist mir, was Doppel-Doppelpunkt-Regeln sind für. Für den seltenen, habe ich noch nicht gesehen, alle open-source-Projekt, dessen Makefile habe nicht beginnen mit

all::

Daher: Was ist der Verwendungszweck der Doppel-Doppelpunkt-Regeln in Makefiles?

  • Ein Grund dafür, dass all:: vorne: Es macht all Standard-Ziel. Eine alternative ist die Nutzung .DEFAULT_GOAL = all vorne, aber das erfordert ein system mit version 3.81. Es gibt viele Unix-Computern, deren make ist entweder GNU make, die älter als 3.81, oder einige andere machen, das unterstützt die Doppel-Doppelpunkt-Regeln.
InformationsquelleAutor lindelof | 2011-10-25
Schreibe einen Kommentar