Aktuelle Zeit: 22.12.2024, 15:16

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Linux make
BeitragVerfasst: 27.05.2007, 12:42 
Offline
Benutzeravatar

Registriert: 21.04.2007, 08:40
Beiträge: 70
Wohnort: Monheim
Wie kann ich am besten eine make datei erstellen unter Linux Ubuntu 7.04?
Gruß MacGyver


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 27.05.2007, 13:14 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Selber tippen.
(Würde ich auf jeden Fall vorschlagen)
Alternativen sind:
- von einer IDE erstellen lassen (zB Code::Blocks, kann dann halt nur mit C::B auch komfortabel wieder compiliert werden)
- von so etwas wie autotool und co erstellen lassen. Für größere Projekte gut, für alles andere absoluter Overkill!

Beispielmakefile, wie ich es benutze, habe aber noch keine automatische Dependency-Erkennung eingebaut:
Code:

SRC = src/main.cpp src/source.cpp
OBJ = $(SRC:src/%cpp=obj/%o)

CFLAGS = -g -I "include"
CXXFLAGS = $(CFLAGS)

all: program

clean:
   -rm obj/*.o
   -rm program

rebuild: clean all

program: $(OBJ)
   $(CXX) $(OBJ) -o $@ -lSomeLibrary

obj/%o: src/%cpp
   $(CXX) -c -o $@ $< $(CXXFLAGS)

obj/%o: src/%c
   $(CC) -c -o $@ $< $(CFLAGS)


Für Fehler wird keine Haftung übernommen :p
Die Sourcecodes kommen in den Ordner ./src, die dazugehörigen includes nach ./include, ein Ordner ./obj muss für die Objektdateien erstellt werden.

EDIT: Mist, phpBB hat die ganzen Tabs rausgenommen. Du musst die Leerzeichen am Anfang der Zeilen halt mit Tabs ersetzen.

_________________
Meine Gameengine :)
Bild


Zuletzt geändert von thephoenix am 27.05.2007, 18:01, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 27.05.2007, 16:49 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Falls wer sich dafür interessiert, hier eine bessere Makefile. Ich habe leider keine Ahnung, wie ich komplizierteres Shellscript in die Makefile einbinde, deswegen habe ich das ganze als externe Datei realisiert, wers besser kann, kann sich hier ja mal melden... ;)

Auch habe ich es eingestellt, dass die Befehle selber nicht angezeigt werden, dadurch wirds zwar übersichtlicher, aber das Makefile wird evtl schwerer zu debuggen.

Makefile:
Code:

SRC = src/main.cpp src/source2.cpp
OBJ = $(SRC:src/%cpp=obj/%o)

CFLAGS = -I "include"
CXXFLAGS = $(CFLAGS)

all: depend program

clean:
   @echo "Cleaning up."
   -@rm obj/*.o
   -@rm program

depend:
   @echo "Generating dependencies."
   @./updatedepend "$(SRC)" "$(CFLAGS)"

rebuild: clean all

program: $(OBJ)
   @echo "Linking $@."
   @gcc $(OBJ) -o $@ -lSomeLibrary

obj/%o: src/%cpp
   @echo "Compiling $<."
   @$(CXX) -c -o $@ $< $(CXXFLAGS)

obj/%o: src/%c
   @echo "Compiling $<."
   $(CC) -c -o $@ $< $(CFLAGS)

-include .depend

updatedepend (muss auf ausführbar gestellt werden):
Code:
#!/bin/bash
rm .depend
for file in $1
do
   filename=${file/#src/obj}
   g++ -MM -MT ${filename/%cpp/o} $file $2 >> .depend;
done

Also insgesamt nicht gerade elegant, da ich mich mit Skripten nich gut auskenne, aber durchaus brauchbar :D

EDIT: Das ganze funzt natürlich auch unter Windows + MinGW, sogar mit Code::Blocks, wenn man eine externe Makefile einstellt!
EDIT2: Was laber ich eigentlich... nur die erste Version funzt, für die 2. bräuchte man die Bash, die ist für Windows zB bei den UnxUtils oder Cygwin dabei...

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Linux make
BeitragVerfasst: 28.05.2007, 11:49 
Offline
Benutzeravatar

Registriert: 21.04.2007, 08:40
Beiträge: 70
Wohnort: Monheim
Ok besten danke.
Werde damit mal ein bissel rumprobieren.

_________________
Mein Blog
Ich würde gern die welt ändern, aber Gott gibt mir den Quellcode nicht
Bild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de