Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 07, 2025 11:10

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Makefiles
BeitragVerfasst: Mo Mär 08, 2010 14:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich kämpfe grad mit Makefiles rum und komm an einer stelle einfach nicht weiter...

mein Makefile schaut etwa so aus:

Code:
  1. [...]
  2.  
  3. SOURCES = \
  4.     ./Source/a.o \
  5.     ./Source/b.o \
  6.     ./Source/c.o \
  7.     ./Source/d.o
  8.  
  9. %.o: %.cpp
  10.     $(CXX) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@


Das klappt wunderbar, er compiliert jede der 4 cpp dateien zu einer *.o datei.
Wenn ich nach b abbreche und dann das make neustarte macht er auch brav bei c weiter statt von anfang an zu beginnen.

Wenn ich jetzt aber das makefile so ändere:

Code:
  1. %.o: %.cpp
  2.     $(CXX) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o ./build/$@


kompiliert er zwar immernoch alles richtig, und die *.o dateien werden im build-ordner erstellt, aber wenn ich nach b abbreche und neustarte, fängt der wieder am anfang an...

Hat irgendwer eine ahnung wie ich den output in ein anderes verzeichnis bekomme, und trotzdem nicht immer wieder von vorn angefangen wird??

Bzw.. das problem ist, ich hab knapp 200 cpp dateien... wenn ich an einer was ändere, soll natürlich auch nur die eine neu compiliert werden... das klappt wunderbar mit der oberen methode, aber soblad ich die *.o's in das build-verzeichnis packe kompiliert er gnadenlos ALLES neu..

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Makefiles
BeitragVerfasst: Mo Mär 08, 2010 14:48 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Aya hat geschrieben:
Hi,


Hi ;-).

Aya hat geschrieben:
Code:
  1.  
  2. %.o: %.cpp
  3. $(CXX) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@



Ich würde mal behaupten er kompiliert deshalb nicht neu, weil er das *.o File welches aus dem *.cpp File generiert wurde findet. Das heißt wenn du den Zielordner änderst, musst du das auch im Makefile sagen, also nicht:
%.o: %.cpp

sondern vielleicht
./build/%.o: %.cpp

Ist aber nur eine Idee, ich kenn mich mit Makefiles eigentlich garnicht aus :-D.

Viel Glück,
Skeptiker


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Makefiles
BeitragVerfasst: Mo Mär 08, 2010 14:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich empfehle das Makefile nicht von Hand zu schreiben sondern einen Generator zu benutzen. Ich bin z.B. ziemlich begeistert von qmake, welches zu Qt gehört. Man kann damit auch Nicht-Qt-Anwendungen schreiben. Alternativ gibt es noch cmake und automake, die habe ich aber nie benutzt.

Ansonsten kann ich dir noch mein Universal-Makefile (aus dem Jahr 2006, bevor ich qmake kannte ;) ) anbieten, welches übrigens die o-Files in einem tmp-Ordner erzeugt. Das Ding sucht sich alle Dateien selbst zusammen, muss dafür aber zusätzliche Depend-Files erzeugen, die dann vom Makefile inkludiert werden.
Ggf. kannst du dir ab schauen wie ich das damals gemacht hab:
http://www-users.rwth-aachen.de/martin. ... d/makefile

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Makefiles
BeitragVerfasst: Mo Mär 08, 2010 15:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hab's hinbekommen :)

Danke~~


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]