Eines meiner größten Probleme bei C ist das Makefile. Vor allem irritiert mich das es so komplett unterschiedlich aussehende Makefiles gibt. So sehen die Makefiles von den Examples "demo.c" und "twitest.c" schon unterschiedlich aus. Das was das Tool "mfile" erzeugt ist wieder anders. Ich sehe zwar Gemeinsamkeiten, tue mich aber noch etwas schwer da komplett durchzusteigen. Bei meinen bisherigen Exkursionen in C/C++ bin ich von Makefiles verschont geblieben. Daher meine Fragen: gibt es ein Tutorial das am besten anhand eines Beispiels erklärt was da wie gemacht wird? Ist die Verwendung von dem Tool "mfile" sinnvoll oder macht's das ganze noch komplizierter? Soviel hab ich glaube ich von Makefiles verstanden. Erstmal werden einige Variablen definiert die später zu Kommandozeilen zusammengebastelt. Außerdem können diverse Tools zb zum Löschen von überflüssigen Dateien aufgerufen werden. Effektiv ist es nix anderes als eine einfache Scriptsprache. Liege ich soweit richtig? Was gibt es darüber hinaus noch zu wissen? thx JarJar
Hi make ist "mehr" als eine Scriptsprache. Im Prinzip definierst du Regeln zum Erstellen von einzelnen Dateien. Eine solche Regel enthält dann Abhängigkeiten von anderen Dateien. Es gibt also z.B. eine Regel: Regel erzeuge_elf: "Erstelle Datei anwendung.elf aus den Dateien main.o, rs232.o und lcd.o mit dem Befehl 'gcc main.o rs232.o lcd.o'" Wird jetzt make mit "make erzeuge_elf" aufgerufen wird diese Regel abgearbeitet. Es wird also geschaut ob die Datei anwendung.elf schon existiert und diese auch neuer ist als die drei "Elterndateien". Trifft diese Bedingung nicht zu (ist also eine der Elterndateien neuer als die Zieldatei) wird der genannte Befehl ausgeführt. Mit mehreren Regeln und diversen Abhängigkeiten ergibt sich dann eine Art Erstellungsbaum, von dem nur die nötigen Zweige abgearbeitet werden. Das Ganze ist vor allem in großen Projekten nützlich da so nicht bei jedem Buildvorgang alle Schritte durchgeführt werden müssen. Für dich reicht es aber wahrscheinlich wenn du in mfile deine gewünschten Einstellungen vornimmst und dann das entstandene makefile einfach benutzt. Neben (GNU)make gibt es noch ein paar Alternativen die aber im Unix-Umfeld und im Zusammenspiel weniger genutzt werden obwohl deren Benutzung IMHO etwas intuitiver ist wie etwa ANT oder JAM. Matthias
Hi Matthias, danke für die Erläuterung. Das bringt gleich wieder etwas mehr Licht in's Dunkel. Ich finde es blöd das in den meißten Büchern Header- und Makefiles immer ziemlich kurz kommen oder gar nicht besprochen werden. Bei Makefiles kann es daran liegen das IDE's meist ohne auskommen, aber Headerfiles braucht jeder C-Compiler früher oder später. Naja, eines Tages hab ich vielleicht mal alles kapiert
Naja, Scriptsprache trifft es nicht so ganz. In einem Makefile werden Regeln definiert, in denen angegeben ist, von welchen Eingangsdateien eine Zieldatei ahbängt und wie sie aus diesen erzeugt werden kann. Make vergleicht beim Aufruf das Alter der Eingangsdateien mit dem der Zieldatei, und wenn eine der Eingangsdateien neuer ist, wird das Ziel neu erstellt. Diese Regeln können dann beliebig tief verschachtelt werden, indem in einer Regel als Eingangsdatei die Zieldatei einer anderen Regel angegeben ist. Die Variablen dienen primär der Übersichtlichkeit und Anpassbarkeit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.