PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makefile



KravenZ
09-08-2007, 20:42
Hallo Leute,

hab ein Problem mit meiner Makefile. Und zwar sieht sie folgendermassen aus:


CC = g++
OBJECTS = main.o KTX.o KTXDefs.o
LIBS = -lSDL_mixer -lSDL_image -lGL -lGLU
CFLAGS =
APPNAME =

sdl: $(OBJECTS)
$(CC) -o $@ $(OBJECTS) $(LIBS)

%.o: %.c %.h
$(CC) -c $(CFLAGS) $<

clean:
rm *.o sdl


Das Problem dabei ist, dass Änderungen an .h Dateien nicht erkannt werden. Wie kriege ich das hin?

Gruß,
KravenZ

jan61
09-08-2007, 23:07
...Das Problem dabei ist, dass Änderungen an .h Dateien nicht erkannt werden. Wie kriege ich das hin?

Heissen denn die .h-Dateien auch main.h, KTX.h, KTXDefs.h? Der Platzhalter % löst ja so auf:
main.o: main.c main.h
[TAB]$(CC) ...
usw.

Wenn das nicht so ist, dann wirst Du wohl die .h-Dateien namentlich angeben müssen.

Jan

KravenZ
11-08-2007, 19:52
Hi. Jep die heissen genau so. Deswegen bin ich ja sehr verwundert.

jan61
12-08-2007, 11:49
Moin,

ich habe das bei mir mal nachgestellt mit einem Mini-Progrämmchen:

jan@jack:~/tmp/mtest> cat makefile
C = gcc
OBJECTS = main.o m1.o

sdl: $(OBJECTS)
$(CC) -o $@ $(OBJECTS)

%.o: %.c %.h
$(CC) -c $<

clean:
rm *.o sdl
Und dann habe ich ein paar Tests gemacht:

jan@jack:~/tmp/mtest> make
cc -c main.c
cc -c m1.c
cc -o sdl main.o m1.o
jan@jack:~/tmp/mtest> touch m1.h
jan@jack:~/tmp/mtest> make
cc -c m1.c
cc -o sdl main.o m1.o
jan@jack:~/tmp/mtest> touch main.h
jan@jack:~/tmp/mtest> make
cc -c main.c
cc -o sdl main.o m1.o
Wie Du siehst - es funktioniert prinzipiell. Es muss bei Dir eine andere Ursache haben. Ach ja:
jan@jack:~/tmp/mtest> uname -r
2.6.5-7.257-smp
jan@jack:~/tmp/mtest> make -v
GNU Make 3.80
Jan