Vorlesungen der VisualSphere SoftwareTools AG
Vorlesungen der VisualSphere SoftwareTools AG
Vorlesungen zum Thema Unix/Linux
Einführung zu make
Make, Makefiles und das Kompilieren von Programmen
- Klassische GNU-Projektcompilation
- Regelgebunden
- Contextuelles Recompilieren
- Nicht Sprachgebunden
- Vorbereitung
- info make
- Web: http://savannah.gnu.org/projects/make/
- Web: google
- O'Reilly: Managing Projects with make
- Einfaches Projekt mit ein paar C-sourcen
- PHONY oder nicht-Datei-Regeln
- Aufrufmodifikatoren '-' und '@'
- Variablen vereinfachen das Leben
- Zuweisung von Variablen
- Spezielle Variablen
- Implizite Regeln
- Make startet mit der ersten expliziten Regel!
- Explizite Regeln
- Implizite Regeln
- Variablen Definitionen
- Anweisungen
- Kommentare: #
- Zeilen auf mehrere physische Zeilen spannen: <BACKSLASH>
- Zeilen mit <TAB> beginnend: Shell-Kommandos
- Komplexe Kompilationen oder Plattformabhängige Kompilation
- Multiple verwalten: Regel::
- Dateinamen-Ersetzung: $(wildcard MUSTER)
- Musterersetzung: $(patsubst %.c,%.o,TEXT)
- statische Musterersetzung bar := $(foo:%.o=%.c)
- Zeichenketten trimmen: $(strip STRING)
- Zeichenketten finden: $(findstring FIND,IN)
- Filterung (z.B. Dateityp): $(filter %.c %.s,$(sources))
- Sortieren der Liste: $(sort LIST)
- basename: $(notdir src/foo.c hacks), $(basename src/foo.c)
- Dateisuffix extrahieren: $(suffix src/foo.c src-1.0/bar.c hacks)
- Suffix hinzufügen:(addsuffix .c,foo bar)
- Shellescape: contents := $(shell cat foo)
- Abhängigkeitssuchpfad: VPATH
- Make in Unterverzeichnissen starten
- Primitive include Methode
- Modernere/GNU-make Art: ein Makefile pro Datei
- Mehrere Kommandos werden wie auf der Shell mit ; getrennt
- Leere Zeilen != Zeilen mit nur einer Tabulation!
- Eine Shell pro Linie
- Parallele Ausführung -j
- Variablen
- Aufruf mit $(MAKE) und nicht make
- Fallunterscheidung ifeq
- Fallunterscheidung ifneq
- Fallunterscheidung ifdef
- Fallunterscheidung ifndef
- Fallunterscheidung als Funktion: $(if CONDITION,THEN-PART[,ELSE-PART])
- Schleife: files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
- Default: make oder make all
- Säuberung: clean
- Komplette Säuberung (incl Konfigurationsdateien): distclean
- Installation: install
- Test des Baus: test
- About this document ...