[linux-l] Makefile
Jan-Benedict Glaw
jbglaw at lug-owl.de
Do Nov 28 22:55:12 CET 2002
On Thu, 2002-11-28 21:49:17 +0100, Olaf Radicke <olaf_rad at gmx.de>
wrote in message <200211282149.17212.olaf_rad at gmx.de>:
> Hi!
>
> Ich wollte dieses Bash-Kommando in ein Makefile umwandeln:
>
> gcc -Wall -g Main.c Bild_laden.c Daten_laden.c Spieler.c
> Spielleitung.c ol_info.c `gtk-config --cflags --libs` -o open-risk
>
> Zur Zeit sieht mein Makefile so aus:
> ----------------| schnipp |---------------------------------------
Goodie:
Zeile eins könnte auch "#!/usr/bin/make -f" beinhalten. Dann kannst Du
das Makefile sogar als Programm aufrufen:-)
> CC = gcc
>
> CFLAGS = -Wall -ggdb -I/usr/include/glib-1.2 -I/usr/lib/glib/include
> -I/usr/X11R6/include -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule
> -lglib -ldl -lXi -lXext -lX11 -lm
> # oder alternativ =
> #CFLAGS = -Wall -ggdb `gtk-config --cflags --libs`
Die letzte der beiden Formen würde ich bevorzugen - dann kannst Du das
Makefile auch mal auf 'nen and'ren Rechner kopieren, wo die
GTK+-Installation vielleicht andere CFLAGS vorsieht.
>
>
> opben-risk : Main.o Bild_laden.o Daten_laden.o Spieler.o
> Spielleitung.o ol_info.o
>
> $(CC) Main.o Bild_laden.o Daten_laden.o Spieler.o Spielleitung.o
> ol_info.o -o open-risk
>
>
> open-risk.o : Main.c Bild_laden.h Daten_laden.h Spieler.h
> Spielleitung.h ol_info.h
> $(CC) $(CFLAGS) -c Main.c
>
> Bild_laden.o : Bild_laden.c Bild_laden.h
> $(CC) $(CFLAGS) -c Bild_laden.c
>
> Daten_laden.o : Daten_laden.c Daten_laden.h
> $(CC) $(CFLAGS) -c Daten_laden.c
>
> Spieler.o :Spieler.c Spieler.h
> $(CC) $(CFLAGS) -c Spieler.c
>
> Spielleitung.o : Spielleitung.c Spielleitung.h
> $(CC) $(CFLAGS) -c Spielleitung.c
>
> ol_info.o : ol_info.c ol_info.h
> $(CC) $(CFLAGS) -c ol_info.c
Zu diesen ganzen .o-Dateien: das kann man abkürzen:-)
.c.o:
$(CC) $(CFLAGS) -o $*.o $*.c
Vorher macht's Sinn, sich eine Liste der ganzen Object-Files
hinzustellen:
OBJECTS = ol_info.o \
Spielleitung.o \
...
Dann kannst Du nämlich sagen:
meinspiel: $(OBJECTS)
$(CC) -o meinspiel $(OBJECTS)
...mit dem Effekt, daß Dein Makefile auf (Anzah der Zeilen) = (Anzahl
der Object-Files) + 10 zusammenschrumpft, oder sogar auf noch weniger,
wenn Du mehrere Object-Files in einer Zeile schreibst.
> clean :
> rm -f *.o
...und das erzeugte Binary? Wird das nicht ins Jenseits befördert?
> -----------------| schnapp |----------------------------------------
>
> Ich mach das zum ersten mal, und habe bei mir keine
> vergleichbaren Makefile gefunden, die ich als Beispiel
> heranziehen kann. Vielleicht kann mir einer sagen wie
> das aussehen muss?
Natürlich gibt's nch _viel_ mehr Kniffe, um sowas so richtig nett zu
bauen, aber das sollte ja nur mal ein Vorgeschmack gewesen sein:-)
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur
fuer einen Freien Staat voll Freier Bürger" | im Internet!
Shell Script APT-Proxy: http://lug-owl.de/~jbglaw/software/ap2/
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 189 bytes
Beschreibung: nicht verfügbar
URL : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20021128/b8060692/attachment.sig>
Mehr Informationen über die Mailingliste linux-l