Makefile erstellen
-
Fehlermeldung bleibt die gleiche.
-
Wenn dein Makefile "erstellen" heißt, rufst du es mit
make -f erstellen
auf.
-
Mit 'make -f erstellen' kommt als Fehlermeldung: make: >>SDL_Game<< ist bereits aktualisiert.
-
Dieser Thread wurde von Moderator/in Phoemuex aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das ist keine Fehlermeldung, sondern signalisiert nur, dass SDL_Game nicht akualisiert werden muss.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-88418.html
-
passt dieses allgemeine Makefile auch für C?
-
Erhard Henkes schrieb:
passt dieses allgemeine Makefile auch für C?
Mit ein paar kleinen Anpassungen passt es auch für C oder Fortran oder was auch immer einen ähnlichen Kompilierporzess hat.
-
Ich habe jetzt mal mein makefile etwas veränder.
makefile:
CC=/usr/bin/g++ CFLAGS=-I/usr/include/SDL LDFLAGS=`sdl-config --cflags --libs` OBJ=Asteroid.o Framework.o Game.o main.o Player.o Shot.o Sprite.o Timer.o TARGET=SDL_Game/SDL_Game Asteroid.o:Asteroid.cpp Asteroid.hpp Sprite.hpp $(CC) -o $@ $(CFLAGS) -c Asteroid.cpp Framework.o:Framework.cpp Framework.hpp Singleton.hpp Timer.hpp $(CC) -o $@ $(CFLAGS) -c Framework.cpp Game.o:Game.cpp Game.hpp Player.hpp Asteroid.hpp $(CC) -o $@ $(CFLAGS) -c Game.cpp main.o:main.cpp Framework.hpp Game.hpp Player.o:Player.cpp Player.hpp Sprite.hpp Shot.hpp $(CC) -o $@ $(CFLAGS) -c Player.cpp Shot.o:Shot.cpp Shot.hpp Sprite.hpp $(CC) -o $@ $(CFLAGS) -c Shot.cpp Sprite.o:Sprite.cpp Sprite.hpp Framework.hpp $(CC) -o $@ $(CFLAGS) -c Sprite.cpp Timer.o:Timer.cpp Timer.hpp Singleton.hpp $(CC) -o $@ $(CFLAGS) -c Timer.cpp $(TARGET):$(OBJ) $(CC) -o $@ $(LDFLAGS) $(OBJ) all:$(OBJ)
Jetzt wird nur noch 'Asteroid.o' ubersetzt.
Alles andere wird übergangen.
Woran kann das liegen?
-
ugoessner schrieb:
Jetzt wird nur noch 'Asteroid.o' ubersetzt.
Alles andere wird übergangen.
Woran kann das liegen?Das liegt daran, dass Du es Dir das mit dem Makefile zu kompliziert machst. Warum machst Du es nicht einfach so "idiotensicher" und wie eine Batch-Datei:
CC = /usr/bin/g++ CFLAGS = -I/usr/include/SDL LDFLAGS = `sdl-config --cflags --libs` all: $(CC) -o Asteroid.o -c Asteroid.cpp $(CFLAGS) $(CC) -o Framework.o -c Framework.cpp $(CFLAGS) $(CC) -o Game.o -c Game.cpp $(CFLAGS) $(CC) -o Player.o -c Player.cpp $(CFLAGS) $(CC) -o Shot.o -c Shot.cpp $(CFLAGS) $(CC) -o Sprite.o -c Sprite.cpp $(CFLAGS) $(CC) -o Timer.o -c Timer.cpp $(CFLAGS) $(CC) Asteroid.o Framework.o Game.o Player.o Shot.o Sprite.o Timer.o -o main $(LDFLAGS) @echo Ende! Keine Fehler! Fertig!
Dann sagst Du einfach:
> make
Oder, wenn Dich die vielen Ausgaben stören:
> make -s
Und das wars.
-
Bei main.o hast du die Anweisung vergessen!
Aber Probier lieber die Makefile aus der FAQ aus. Die ist besser, als deine Makefile (u.a. macht die das mit den Headerabhängigkeiten von selbst und du musst die Makefile nicht für jede neue Codedatei manuell anpassen!)
abc.w schrieb:
Das liegt daran, dass Du es Dir das mit dem Makefile zu kompliziert machst. Warum machst Du es nicht einfach so "idiotensicher" und wie eine Batch-Datei:
Weil dann alles immer neu kompiliert wird. Das ist natürlich sehr ineffizient. Daher macht man es eben genauso nicht!
-
rüdiger schrieb:
Weil dann alles immer neu kompiliert wird. Das ist natürlich sehr ineffizient. Daher macht man es eben genauso nicht!Sicher ist sicher und für dieses Vorhaben völlig ausreichend und
rüdiger schrieb:
Bei main.o hast du die Anweisung vergessen!
man sieht gleich, dass man etwas falsch gemacht hat
-
abc.w schrieb:
rüdiger schrieb:
Weil dann alles immer neu kompiliert wird. Das ist natürlich sehr ineffizient. Daher macht man es eben genauso nicht!Sicher ist sicher und für dieses Vorhaben völlig ausreichend und
Nein, dein Vorschlag ist nicht sicher und auch nicht ausreichend. Daher sollte er lieber die fertige Makefile aus der FAQ nehmen.
abc.w schrieb:
rüdiger schrieb:
Bei main.o hast du die Anweisung vergessen!
man sieht gleich, dass man etwas falsch gemacht hat
Bei deiner Form sieht man es doch erst recht nicht, ob man etwas vergessen hat. Du hast main.o zB komplett vergessen.