Stefans Wiki



A PCRE internal error occured. This might be caused by a faulty plugin

====== Makefile ====== Mit Hilfe des Programmes [[http://www.gnu.org/software/make/|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 [[unix:vim:startseite|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. <code bash 1|h Makefile> # Name des ausfuehrbaren Programmes PROG = programm # Compiler CC = g++ CFLAGS = -Wall -ansi -pedantic # Linker LD = g++ LDFLAGS = OBJFILES = $(patsubst %.cpp,%.o,$(wildcard *.cpp)) # Sicherheitskopien BACKUPSUFFIX = ~ BACKUPFILES = $(patsubst %.cpp,%.cpp$(BACKUPSUFFIX),$(wildcard *.cpp)) $(patsubst %.h,%.h$(BACKUPSUFFIX),$(wildcard *.h)) # Programm zum loeschen von Dateien # DEL = del DEL = rm -f # Programm um Meldungen auf der Konsole ausgeben zu koennen ECHO = echo # Tags TAGS = ctags TAGSFLAGS = -a -R --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++ TAGSFILE = tags .PHONY: help clean cleantags cleanbackup cleanall # Alles machen - compilieren und linken all: $(PROG) # Hilfe ausgeben help: @$(ECHO) Regeln @$(ECHO) ------ @$(ECHO) all : Quelldateien compilieren und linken @$(ECHO) tags : Tag-Datei erstellen @$(ECHO) clean : temporaere Dateien loeschen @$(ECHO) cleanbackup: Sicherheitskopien loeschen @$(ECHO) cleantags : Tag-Datei loeschen @$(ECHO) cleanall : Fuehre clean, cleanbackup und cleantags aus @$(ECHO) @$(ECHO) Infos @$(ECHO) ----- @$(ECHO) Programmname: $(PROG) @$(ECHO) # Programm linken $(PROG): $(OBJFILES) @$(ECHO) ====================================================================== @$(ECHO) Linken @$(ECHO) ====================================================================== $(LD) $(LDFLAGS) $(OBJFILES) -o $(PROG) # Programm compilieren %.o: %.cpp @$(ECHO) ====================================================================== @$(ECHO) Compilieren @$(ECHO) ====================================================================== $(CC) $(CFLAGS) -c -o $@ $< # Objektdateien loeschen clean: $(DEL) $(OBJFILES) # Tagdatei erstellen tags: $(TAGS) $(TAGSFLAGS) -o $(TAGSFILE) . # Tagdatei loeschen cleantags: $(DEL) $(TAGSFILE) # Sicherheitskopien loeschen cleanbackup: $(DEL) $(BACKUPFILES) # Alle temporaren Dateien in einem Durchgang loeschen cleanall: clean cleantags cleanbackup </code> ===== Hinweis ===== 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.

cpp/makefile.txt · Zuletzt geändert: 24.03.2011 22:06 (Externe Bearbeitung)
Quelle: http://stefanjahn.de/cpp:makefile
Webseite: http://stefanjahn.de