Frage

Ich versuche gnumake für ein kleines Projekt zu erfahren, ich arbeite. Bisher selbst die „basic“ Tutorials scheinen ziemlich rau und ich habe noch Sinn für die Make-Datei Syntax zu machen.

Hat einige gute Ressourcen jemand für einen absoluten Anfänger haben, um sich mit gnumake?

War es hilfreich?

Lösung

Der definitive Leitfaden ist http://www.gnu.org/software/ machen / manual / make.html
Es gibt ein O'Reilly-Buch „Verwalten von Projekten mit GNU Make“, die mehr Erklärung hat. Sie können auch die früheren Ausgaben verwendet, sie decken nicht gnumake speziell aber sind sehr viel dünner.

Jetzt ist ein schmutziges Geheimnis unter den Entwicklern - keiner von uns verstehen, wir leihen nur einen Make-Skript von jemandem anderen und verändern. Ich stelle mir nur ein Skript jemals von Grunde auf (wahrscheinlich vom Schöpfer des Werkzeugs) geschrieben wurde.

Wenn Sie mehr als das einfache Beispiel der meisten Menschen entweder Umstellung auf ein modernere Build-System wie Ant zu tun oder ihre eigene Rolle in Perl / Python / etc.

Andere Tipps

Die am häufigsten Merkmale von Make verwendet kann in ein paar einfache Konzepte, Ziele, Abhängigkeiten und Variablen gebrochen werden.

Ziele sind die Dinge, die Sie bauen wollen, aber der Befehl (s) unter einem Ziel kann Compiler Befehle oder Scripts sein. Im Allgemeinen bezieht sich jedes Ziel auf ein Modul in Ihrem Code, aber Sie können diese als körniges machen, wie Sie Ihr Projekt anpassen möchten.

Abhängigkeiten sind Dateien oder andere Ziele in Ihrem Projekt. Das beste Beispiel hierfür ist ein C-Projekt, wo Sie bauen einen binäre aus einem Bündel von Objektdateien. Jede Objektdatei müssen vorhanden sein, bevor Sie die binäre bauen können, so stellen Sie Ihre Ziele durchlaufen, bis alle Abhängigkeiten abgeschlossen wurden, und dann den Befehl für das Gesamtziel ausgeführt werden.

Variablen sind nicht immer notwendig, aber sie sind ziemlich praktisch für Dinge wie Compiler-Flags Handhabung. Die kanonischen Beispiele sind CC und CCFLAGs die dem Compiler die Verwendung von d gcc und die Flaggen wie -ansi -Wall -o2 beziehen.

Noch ein paar allgemeine Tipps und Tricks:

  • Befehle müssen durch eine [Tab] Charakter vorgegangen werden, oder sie werden nicht durchgeführt werden, ist dies nur ein altes Relikt aus make, erinnere ich mich nicht, warum dies ist.
  • Vereinbarungs, können Sie ein all Ziel angeben, den Standard enthalten, das Ziel der Standard sein sollte. Dies ist nützlich, wenn Sie eine komplexe Make-Datei haben, und es gibt ein bestimmtes Ziel, das Sie wollen immer der Standard sein.
  • Ihr Make-Datei sollte Make-Datei oder Makefile genannt werden, aber wenn man es etwas anderes nennen wollen, verwenden Sie $ make -f [makefilename]
  • Verwenden Sie immer die volle variable Expansions Syntax d $ (variabel) oder machen kann nicht ausgegeben, um die Befehle, die Sie wollen.
  • rekursiv funktioniert, so dass, wenn Sie eine Reihe von Sub-Module in Ihrem Projekt, das innerhalb von Verzeichnissen leben, können Sie auf dem Unterverzeichnis Make-Datei aus make machen rufen jeweils zu bauen.
  • Wenn Sie ein wirklich kompliziertes Projekt, das eine Installationsskripts muss etc. werden Sie wahrscheinlich wollen auch untersuchen Autotools, die für Sie die Make-Datei erzeugt und hat eine Reihe von Tricks für die Bibliothek Existenz zu überprüfen und für andere Portabilitätsprobleme.

"Verwalten von Projekten mit GNU Make, 3. Auflage" unter "GNU Free Documentation License" gesetzt und kann legal kostenlos online gelesen werden: link .

Ich stimme mit dem O'Reilly-Buch Vorschlag.

Für einige hilfreichen Tipps, Tricks und Einblicke in Make Blick auf dem Mr . Machen Sie Artikel

mgb: Es ist noch schlimmer als das. Ich habe einmal ein kompliziertes Make-System von Grunde auf neu schreiben (ein paar tausend Dateien, fünfzig oder hundert Verzeichnisse, vier oder fünf Compiler und Querübersetzbarkeit Ziele, 2 OS, etc.). Ich setzte mich und lernte Gnu macht innen und außen zunächst einmal, das System entworfen, spielte mit einem Prototyp zuerst. Wir waren alle sehr zufrieden mit dem Ergebnis.

Aber das war vor Jahren. Sie wissen, wie ich sie heute schreiben? Genauso, wie Sie beschreiben. Es ist nur knifflig genug und die Syntax Details sind dunkel genug, als wenn Sie es tun ziemlich regelmäßig Sie die Details nicht mehr erinnern kann. Genau wie jede andere Sprache mit nicht-intuitiver Syntax und einigen schrulligen Regeln, denke ich.

Ich bin nicht großer Fan von GNU Info-System, aber ich habe das GNU macht Info-Seiten als sehr nützlich erwiesen. Sobald Sie die sehr grundlegenden Konzepte kennen und grob welche Art von Dingen zur Verfügung steht, habe ich festgestellt, dass Info-Seiten der schnellste Weg sind Informationen wie prebuilt Funktionen zu beziehen, zum Beispiel.

(Vergessen Sie das GNU info Programm, und verwenden Sie zum Beispiel pinfo statt.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top