Index  Referenz Richtlinien Bemerkungen 

Makefiles und Makros

Hier sind Muster fuer die Makefiles. Alle Makros, die in der aulib++ verwendet werden, sind in den Dateien erklaert. Zum Erzeugen von aulib++ wird folgendes Makefile verwendet:

# Makefile zum Erzeugen der Audiobibliothek aulib++

# ------------------ Der Compiler ------------------------
# Compilername:
CC = g++

# notwendige Optionen und Makros:
# -fhandle-exceptions - Ausnahmebehandlung
# -Wall - alle Warnungen anzeigen
# -DDAMN_INTEL_BYTE_ORDER - auf einem Littel-Endian-Rechner
# -g - ausfuehrbare Dateien mit Angaben fuer den Debugger

# andere Optionen und Makros:
# -O2 - Code-Optimierung
# -DAF - wenn der AFPlayer verwendet wird (nur am Lehrstuhl moeglich)
# -DTEST - Ausgabe von Zwischenergebnissen
# -DLOGFILE - Zwischenergebnisse in results.log ablegen

CFLAGS = -g -DDAMN_INTEL_BYTE_ORDER -DLOGFILE -DAF -Wall -fhandle-exceptions -DTEST

# Verzeichnisse mit Headerdateien:
# -I. - aktuelles Verzeichnis (immer dabei)
# -I/opt/audio/AF/include - notwendig nur fuer den AFPlayer
INC =  -I. -I/opt/audio/AF/include

# Name der Bibliothek:
ALIB = AUlib

# --------------------- Module ----------------------------
SRCS = auformat.cpp aucache.cpp audata.cpp aufactor.cpp aufile.cpp \
       aufile_c.cpp aufile_l.cpp aufile_o.cpp aufile_x.cpp \
       aufile_s.cpp compfft.cpp energy.cpp amplitud.cpp length.cpp \
       threshol.cpp cres.cpp afplayer.cpp aucut.cpp

OBJS = auformat.o aucache.o audata.o aufactor.o aufile.o aufile_c.o \
       aufile_l.o aufile_o.o aufile_x.o aufile_s.o compfft.o energy.o \
       amplitud.o length.o threshol.o cres.o afplayer.o aucut.o

# "Packen" der Objektdateien in eine einzige .a Datei:
lib$(ALIB).a: $(OBJS)
    ar ruv lib$(ALIB).a $(OBJS)

.SUFFIXES:
.SUFFIXES: .cpp $(SUFFIXES)

# Erzeugen von Objektdateien:
.cpp.o:
    $(CC) -c $(CFLAGS) $(INC) $*.cpp

# Aufraeumarbeiten:
clean:
    rm -f $(OBJS)

Zum Erzeugen einer Anwendung, die aulib++ benutzt, wird folgendes Makefile verwendet:

# Makefile zum Erzeugen einer aulib-Anwendung

# ------------------ Der Compiler ------------------------
# Compilername:
CC = g++

# notwendige Optionen und Makros:
# -fhandle-exceptions - Ausnahmebehandlung
# -Wall - alle Warnungen anzeigen
# -DDAMN_INTEL_BYTE_ORDER - auf einem Littel-Endian-Rechner
# -g - ausfuehrbare Dateien mit Angaben fuer den Debugger

# andere Optionen und Makros:
# -O2 - Code-Optimierung
# -DAF - wenn der AFPlayer verwendet wird (nur am Lehrstuhl moeglich)
# -DTEST - Ausgabe von Zwischenergebnissen
# -DLOGFILE - Zwischenergebnisse in results.log ablegen

CFLAGS = -g -DDAMN_INTEL_BYTE_ORDER -DLOGFILE -DAF -Wall -fhandle-exceptions -DTEST

# Bibliotheken, die Eingebunden werden muessen:
# AudioFile (notwendig nur fuer den AFPlayer)
AFLIB = -L/opt/audio/AF/lib -lAFUtil -lAF
# Die aulib++ selbst:
ALIB = AUlib
# Pfad der aulib++ Headerdateien und der .a Datei:
AUPATH = ~/AULIB++/code

LIB = -l$(ALIB) $(AFLIB) $(SOCKLIB) -lm -L$(AUPATH)

# Spezielle Pfadangeben (notwendig nur am Lehrstuhl):
DLINK = -Wl,-rpath,/opt/tcltk/lib:/opt/X11R6.3/lib:/opt/graphics/lib:/opt/GNU/lib

# Verzeichnisse mit Headerdateien:
# -I. - aktuelles Verzeichnis (immer dabei)
# -I$(AUPATH) - aulib++ Headerdateien
# -I/opt/audio/AF/include - notwendig nur fuer den AFPlayer
INC =  -I. -I$(AUPATH) -I/opt/audio/AF/include

# --------------------- Anwendungen ----------------------------
all: Example

Example: $(AUPATH)/lib$(ALIB).a Example.cpp; $(CC) $(CFLAGS) $(DLINK) -o $@ Example.cpp $(INC) $(LIB)

# Falls aulib++ nicht auf dem neuesten Stand, wird sie zuerst neu ubersetzt:
$(AUPATH)/lib$(ALIB).a: ; (cd $(AUPATH) ; make lib$(ALIB).a)



Last modified: $Id: makefile.htm,v 1.1 1998/02/06 09:51:23 tomczyk Exp tomczyk $