Wie oft wird ein Programmierer aufgefordert, eine Makefile-Datei zu schreiben? [geschlossen]

7

Ist Makefile ein fortgeschrittenes Problem oder ein allgemeines Problem für einen Programmierer? Wie oft wird er für einen C ++ - Programmierer aufgefordert, eine Makefile-Datei zu schreiben?

    
skydoor 31.03.2010, 21:16
quelle

11 Antworten

24

Niemand schreibt jemals ein Makefile. Sie nehmen ein vorhandenes Makefile und ändern es.

Sei nur dankbar, dass du dich nicht mit IMakefile befassen musst. (Für diejenigen unter Ihnen, die das Glück hatten, sich nie damit zu befassen, oder die es geschafft haben zu vergessen, war IMakefile eine Datei, die ein Meta-Makefile für X Window System-basierte Projekte war, mit dem ein Makefile erzeugt werden konnte, das es wusste wo du all deine X Windows Libraries und Binaries installiert hast. Es ist unnötig zu sagen, dass es gesaugt hat.

    
Paul Tomblin 31.03.2010, 21:21
quelle
16

Das Einrichten eines sinnvollen Build-Systems ist Teil des Handwerks. Ich würde erwarten, dass jeder Nicht-Super-Junior-Entwickler ein Makefile erstellen kann.

    
Nikolai Fetissov 31.03.2010 21:20
quelle
4

So oft wie er aufgefordert wird, ein brandneues Projekt zu starten, das einem bestehenden Projekt, dessen Build-Skripte angepasst werden können, nicht ähnlich ist. Das ist keine gute Antwort, aber meiner Erfahrung nach gab es schon immer Code / Ressourcen / Build-Skripte, die ich anpassen kann.

Anders gesagt, für jeden C ++ - Programmierer ist es wichtig zu erfahren, wie sein Code aufgebaut ist. Makefiles, Ant-Skripte usw. sind nur der Implementierungsmechanismus. Also ich denke, es ist wichtig genug zu lernen.

    
omermuhammed 31.03.2010 21:21
quelle
2

Programmierer müssen wissen, wie sie ihre Projekte erstellen. Normalerweise (nach meiner Erfahrung) basiert der 'production build' auf dem Makefile des ursprünglichen Programmierers. Viele Programmierer gehen ihre ganze Karriere nur blind herum, wenn sie ihre Makefiles zusammenstellen, aber jeder Programmierer muss es tun.

    
John Dibling 31.03.2010 21:21
quelle
1

Ich habe Makefiles nie als Probleme betrachtet, sie sind ziemlich nützlich ...

Die Häufigkeit hängt von der verwendeten Plattform und Ihrer Rolle ab.

Zum Beispiel gibt es in einigen Organisationen eine ziemlich feste Build-Datei, die sich nicht oft ändert, während in anderen häufig Änderungen vorgenommen werden. Einige Organisationen verlassen sich auf die IDE, um mit dem Build usw. fertig zu werden. Sie müssen nicht der Bauingenieur sein.

Ich denke, dass die meisten C / C ++ - Entwickler zumindest ein grundlegendes Verständnis davon haben sollten, wie Makefiles funktionieren, obwohl sie keine Gurus sein müssen. In meiner Alma Mater, das ist ein Teil des ersten Jahres CS.

    
Uri 31.03.2010 21:18
quelle
1

Zu beachten ist, dass, wenn das Build-System modular aufgebaut ist, es nicht üblich ist, ein riesiges Makefile für das Ganze zu erstellen, sondern Makefiles für Bits, die rekursiv vom Master-Makefile aufgerufen werden können. Dies ist ein großartiges Feature, da es bedeutet, dass verschiedene Produkte (Bibliotheken?) Als separate Einheiten gebaut werden können, oft parallel.

Makefiles wurden entwickelt, um den Build-Prozess zu automatisieren. Daher sind sie definitiv keine lästige Pflicht; Sie ersparen Ihnen das Schreiben von gcc -c *.c etc die ganze Zeit. Nicht nur das, aber ein richtig geschriebenes Makefile hat Phonies zum Säubern, Neuaufbau usw. Bei den meisten meiner Projekte macht make rebuild genau das - säubert alles und beginnt neu.

Makefiles sind wirklich nützlich. Ich kann das nicht genug sagen.

    
user257111 31.03.2010 21:26
quelle
1

Selbst wenn Sie eine IDE verwenden, die sich mit den Details der Erstellung des Projekts beschäftigt, können Makefiles immer noch sehr nützlich sein. Gelegentlich benötigen Sie einige zusätzliche Funktionen als Teil Ihres Build-Prozesses, um beispielsweise einen Vorverarbeitungsschritt auszuführen, um eine C ++ - Datei programmgesteuert zu generieren (wenn Sie Qt verwenden, müssen Sie möglicherweise moc für Ihre Header-Dateien oder% ausführen co_de% für Ihre Ressourcendateien (möglicherweise müssen Sie eine IDL-Datei verarbeiten, um eine Implementierungsdatei zu generieren) oder als Post-Build-Schritt zum Kopieren von Dateien an ein Ziel. In diesen Fällen haben Sie normalerweise zwei Möglichkeiten:

  • Führen Sie die Skripte jedes Mal als Pre- oder Post-Build-Schritte aus, was bedeutet, dass die App jedes Mal neu erstellt wird, wenn Sie sie erstellen
  • Erstellen Sie ein Makefile, um die Aktion auszuführen, die die Abhängigkeitsregel enthält, so dass der Schritt nur aufgerufen wird, wenn der Zeitstempel der Eingabedatei neuer ist als der der Ausgabedatei. Ein Projekt, das bereits auf dem neuesten Stand ist, macht nichts

Ein C ++ - Entwickler kann viele Jahre gehen, ohne ein Makefile zu erstellen, wenn er nicht unter Linux / Unix arbeitet, aber ein anständiger Entwickler wird versuchen, zu verstehen, wie Makefiles funktionieren, da sie wahrscheinlich einen Teil Ihres aktuellen Workflows verbessern werden.

    
the_mandrill 31.03.2010 21:38
quelle
1

Ich nehme an, es kommt darauf an ...

Persönlich bin ich ziemlich fasziniert von der Syntax von Makefiles. Jede Art von Operation in simple auf den Pfaden des Objekts ist so schwierig.

Auf der anderen Seite ist es einfach notwendig zu bauen und die verschiedenen Argumente in der Kompilierzeile zu verstehen. Obwohl vielleicht nicht für einen Junior.

Ich musste das Build-System unserer Anwendung knapp ein Jahr nach meiner Schulzeit neu schreiben. Ich habe es mit scons gemacht und es hat super funktioniert. Die Bauzeit ging von 1h30 auf knapp 10m, da ich endlich eine parallele Kompilierung durchführen konnte und eine automatische lokale Replikation der verwendeten Bibliotheken vornahm.

Die Moral ist: Wenn Sie jemanden bitten, einen Build-Mechanismus aufzuheben, erzwingen Sie Makefile nicht auf ihn. Lassen Sie ihn ein neueres Werkzeug auswählen.

    
Matthieu M. 01.04.2010 06:34
quelle
1

Ein wichtiger Teil von make ist der Shell-Code, den Sie in jede Regel schreiben können. Es ist also nicht nur wichtig, make zu lernen, sondern es ist auch sehr hilfreich, eine Shell-Sprache wie bash zu verstehen und sie auf ein Projekt anzuwenden.

    
Trevor Hickey 04.11.2011 04:45
quelle
0

Es hängt von den Werkzeugen / Bibliotheken / Frameworks ab, die Sie für Ihr Projekt verwenden. Für meinen Job code ich Qt, so dass ich nie ein Makefile schreiben muss, da qmake es für mich tut, obwohl ich wissen muss, wie man stattdessen eine qmake -Projektdatei erstellt.

Ich gebe zu, dass ich wahrscheinlich über das einfachste Makefile hinaus nichts schreiben konnte, ohne es von Grund auf neu lernen zu müssen. Ich sehe nicht, dass sich das bald ändern wird, da ich es nur lernen würde, wenn ich dazu gezwungen würde. Warum etwas lernen, das du vielleicht nie brauchst?

    
Troubadour 31.03.2010 21:25
quelle
0

Ich wurde in den letzten fünf Jahren nicht gebeten, ein Makefile zu schreiben. Manchmal konnte ich ein vorhandenes Makefile ändern.

Aber wenn Sie Tools haben, die den Job ohne das make-Programm erstellen, ist es nicht notwendig, sich um Makefiles zu kümmern. In Bezug auf Ihre Frage, wenn ein C ++ - Programmierer aufgefordert wurde, eine solche Datei zu schreiben : Es kommt darauf an.

    
harper 18.03.2013 17:47
quelle

Tags und Links