Zum Inhalt, überspringe Kopfzeile Zur Navigation, überspringe Kopfzeile
Mit Hilfe des Programmes make und einem Makefile ist es möglich den Compiler- und Link-Prozeß, speziell wenn man mehrere Quelldateien hat, sehr zu vereinfachen. Ein einfaches make all in der Shell reicht dann aus um das komplette Programm mit allen Abhängigkeiten zu bauen.
In Verbindung mit dem Texteditor Vim und den dort im Editor vorhandenen Befehlen make und copen hat man somit ein sehr mächtiges Entwicklungswerkzeug.
Das folgende Makefile ist dafür gedacht alle Quelldateien in einem Verzeichnis zu compilieren und schlussendlich zusammen zu linken.
1: # Name des ausfuehrbaren Programmes 2: PROG = programm 3: 4: # Compiler 5: CC = g++ 6: CFLAGS = -Wall -ansi -pedantic 7: 8: # Linker 9: LD = g++ 10: LDFLAGS = 11: OBJFILES = $(patsubst %.cpp,%.o,$(wildcard *.cpp)) 12: 13: # Sicherheitskopien 14: BACKUPSUFFIX = ~ 15: BACKUPFILES = $(patsubst %.cpp,%.cpp$(BACKUPSUFFIX),$(wildcard *.cpp)) $(patsubst %.h,%.h$(BACKUPSUFFIX),$(wildcard *.h)) 16: 17: # Programm zum loeschen von Dateien 18: # DEL = del 19: DEL = rm -f 20: 21: # Programm um Meldungen auf der Konsole ausgeben zu koennen 22: ECHO = echo 23: 24: # Tags 25: TAGS = ctags 26: TAGSFLAGS = -a -R --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++ 27: TAGSFILE = tags 28: 29: .PHONY: help clean cleantags cleanbackup cleanall 30: 31: # Alles machen - compilieren und linken 32: all: $(PROG) 33: 34: # Hilfe ausgeben 35: help: 36: @$(ECHO) Regeln 37: @$(ECHO) ------ 38: @$(ECHO) all : Quelldateien compilieren und linken 39: @$(ECHO) tags : Tag-Datei erstellen 40: @$(ECHO) clean : temporaere Dateien loeschen 41: @$(ECHO) cleanbackup: Sicherheitskopien loeschen 42: @$(ECHO) cleantags : Tag-Datei loeschen 43: @$(ECHO) cleanall : Fuehre clean, cleanbackup und cleantags aus 44: @$(ECHO) 45: @$(ECHO) Infos 46: @$(ECHO) ----- 47: @$(ECHO) Programmname: $(PROG) 48: @$(ECHO) 49: 50: # Programm linken 51: $(PROG): $(OBJFILES) 52: @$(ECHO) ====================================================================== 53: @$(ECHO) Linken 54: @$(ECHO) ====================================================================== 55: $(LD) $(LDFLAGS) $(OBJFILES) -o $(PROG) 56: 57: # Programm compilieren 58: %.o: %.cpp 59: @$(ECHO) ====================================================================== 60: @$(ECHO) Compilieren 61: @$(ECHO) ====================================================================== 62: $(CC) $(CFLAGS) -c -o $@ $< 63: 64: # Objektdateien loeschen 65: clean: 66: $(DEL) $(OBJFILES) 67: 68: # Tagdatei erstellen 69: tags: 70: $(TAGS) $(TAGSFLAGS) -o $(TAGSFILE) . 71: 72: # Tagdatei loeschen 73: cleantags: 74: $(DEL) $(TAGSFILE) 75: 76: # Sicherheitskopien loeschen 77: cleanbackup: 78: $(DEL) $(BACKUPFILES) 79: 80: # Alle temporaren Dateien in einem Durchgang loeschen 81: cleanall: clean cleantags cleanbackup
Das Programm make ist sehr penibel was die Formatierung eines Makefiles angeht. Sämtliche Einzüge im Makefile müssen mit Tabulator gemacht werden, jegliches Leerzeichen führt zu einer Fehlermeldung.
Zum Inhalt zurück, überspringe Navigation | Zum Seitenanfang