# Beispiel eines Makefiles # ------------------------ # Zeilen mit # sind Kommentar # Man definiert sich einige Variable (=Zeichenketten) # Name des zu erzeugenden ausfuehrbaren Programms PROG = helloworld.LINUX # Name des Compilers: F77 = gfortran # Compiler-Optionen (hier keine) FFLAGS = # Linker-Optionen (hier keine) LDFLAGS = # Liste aller Objektfiles (hier nur eines) OBJECTS = HelloWorld.o # Variante mit zwei einzelnen Quellen fuer Haupt- und Unterprogramm: # OBJECTS = Hello.o World.o # Die erste Zeile mit einem ":" definiert ein Standard-Target # (=Ergebnis, das beim Aufruf von make gewuenscht wird) # hinter dem Doppelpunkt stehen die Files, die dazu benoetigt # werden, darunter die Kommandos zum Erzeugen/Aktualisieren # des vor dem Doppelpunkt angegebenen Targets. # WICHTIG: Einrueckung durch Tabulator, nicht Leerzeichen $(PROG): $(OBJECTS) $(F77) -o $@ $(OBJECTS) $(LDFLAGS) # Standardregeln zum Erzeugen bestimmter Files # ".f.o" definiert, was zu tun ist, wenn ein .o-File # gebraucht wird, und ein gleichnamiges File mit der # Endung .f vorhanden ist. .SUFFIXES: .f .o .f.o: $(F77) -c $(FFLAGS) $< # Anstelle dieser Schreibweise kann man auch folgende verwenden: # %.o: %.f Makefile # $(F77) -c $(FFLAGS) $< # dabei ist die Angabe von "Makefile" nicht notwendig, wuerde # aber dazu fuehren, dass alle Quellen neu uebersetzt werden, # nachdem am Makefile etwas geaendert wurde. # Oft moechte man eine einfache Moeglichkeit haben, ein # Verzeichnis wieder aufzuraeumen - das geht z.B. mit # "make clean" clean: rm $(PROG) *.o