[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