make
Allgemeines
Für nähere Informationen zum Thema make empfiehlt sich
die Seite des GNU Projektes.
Aufruf von make
- make [all]
Startet den Kompiliervorgang auf der aktuellen Ebene.
Ruft für alle Module make compile-local und make link
für die lokale Ebene auf.
- make compile
Leitet den Kompiliervorgang ein.
Kompiliert alle Objekte in der lokalen Ebene plus eingetragene
Datenstrukturen und Schnittstellen.
- make compile-local
Leitet den Kompiliervorgang ein.
Kompiliert nur die Objekte der lokalen Ebene.
- make link
Leitet den Linkvorgang ein.
- make clean
Löscht alle temporär erzeugten Objektdateien.
- make test
Ruft make compile-local und make link auf. Gibt einige akustische
Signale nach Beendigung des Vorganges aus und startet dann
das zur lokalen Ebene gehoerige Programm.
- make depend
Wird nur benötigt, wenn neue Dateien in die Makefiles aufgenommen wurde, damit die Abhängigkeiten neu erzeugt werden.
- make -i
Die Option -i bewirkt, dass make selbst dann nicht abbricht, wenn eine Regel nicht befolgt werden kann.
Makefiles
Es existieren innerhalb der Module zwei Dateien, welche make betreffen.
Zum einen
- Makefile
Beinhaltet grundlegende Regeln, welche durch den Anwender aufgerufen
werde können.
Zudem sollten die folgenden Variablen auf die notwendigen Inhalte
überprüft werden:
- SRCS
Liste der Quellcode-Dateien aus dem eigenen Modul, welche übersetzt werden sollen
und zum anderen
- Makefile.env
Beinhaltet alle Regeln zum Kompilieren, Linken, Aufräumen usw.
Zudem sollten die folgenden Variablen auf die notwendigen Inhalte
überprüft werden:
- OBJECTS_DSTRUCTURE
Liste der Objektdateien, welche aus dem Modul Datenstruktur hinzugelinkt werden sollen.
- OBJECTS_INTERFACE
Liste der Objektdateien, welche aus dem Modul Programm hinzugelinkt werden sollen.
- CC_CPPFLAGS
Flags, welche an den Compiler übergeben werden sollen.
- CC_LDFLAGS
Flags, welche an den Linker übergeben werden sollen.
Nur beim Modul Programm werden automatisch alle Objektdateien hinzugelinkt!
Tipps
Nach einem cvs update bricht der Linker ab! |
Manchmal besteht das Problem darin, dass; zwar der
Quellcode aktualisiert wurde, nicht jedoch die zugehörigen
Objektdateien neu übersetzt wurden.
Hier hilft dann ein make clean gefolgt von einem erneuten make. |
Der Linker bricht mit einem undefined symbol ab! |
Unter Umständen wurde nur eine Methode mit falschen Parametern
aufgerufen.
Manchmal kann jedoch auch das Überprüfen der Variablen
OBJECTS_DSTRUCTURE und OBJECTS_INTERFACE aus Makefile.env auf
vollständige Einbindung aller benötigten Objektdateien
aus anderen Modulen weiterhelfen.
Auch daran denken, daß manche Objekte aus anderen Modulen wiederum
Objekte aus dem entsprechenden Modul benötigen können! |
|
|
|
|