# Makefile



## Whizzle (29. September 2004)

Mein Professor will zur Abgabe des Projekts unbedingt ein makefile haben, damit er es unter eclipse ausführen kann. Ich arbeite aber mit Dev-C++ und brauchte das bisher gar nicht. Ich weiß zwar wie es über eclipse geht und so, aber hab keine lust erst wieder eclipse zu installieren, gibt es da vielleicht einen Befehl in der shell oder so etwas, womit ein makefile automatisch erstellt wird?


----------



## Patrick Kamin (29. September 2004)

```
vi makefile
```


----------



## RedWing (29. September 2004)

1.) 
Hast du dein Projekt nun unter Windows(Zitat: Dev-C++) oder Linux (Zitat: shell) 
entwickelt?
Bei zweiterem kannst du die folgenden Wege gehen:

Es kommt auf die Größe deines Projekts an...

Wenn klein:

siehe Patrick Kamin.

Wenn groß:

Von der IDE (Eclipse KDEDevelop) erstellen lassen oder sich mit gnu automake befassen...

Gruß

RedWing


----------



## Whizzle (30. September 2004)

Also ich arbeite mit windows und mein Programm ist nicht so groß, aber da ich kein eclipse habe und ich auch nicht den "Wink" mit "vi makefile" verstehe, stehe ich immer noch auf der leitung?


----------



## vault-tec (30. September 2004)

*make-File zu Fuß erstellen*

Hallo,

Kommst du denn auch mit einem Kommandozeilen - Compiler klar?
Wir haben letztes Semester in der C - Vorlesung gelernt, make-files zu schreiben (und zwar von Hand in einem einfachen Texteditor, dessen weitreichendstes Extra das Highlighting von Java - bzw. C - Schlüsselwörtern ist), Vorraussetzung war allerdings ein Kommandozeilen - Compiler, da dieser im make-File aufgerufen werden muss...
Ich hab das zwar unter Linux gelernt, es müsste aber auch mit einem Windows - C - Compiler funktionieren (Dann sähe wahrscheinlich der Aufruf des Compilers im make-File etwas anders aus).
 Wie ein make-File aufgebaut ist, könnte ich dir versuchen zu erklären; das müsste ich halt aber erst nochmal daheim in meinem Vorlesungsskript nachschlagen.

Gruß, Niko


----------



## RedWing (30. September 2004)

Also vi ist ein Editor geschrieben für Linux, obwohl es mittlerweile auch einen 
Clon für Windows gibt...

Makefiles sind immer abhängig davon welche Compiler du, bzw dein eclipse benutzt.

Ich kenn mich mit eclipse nur unzureichend aus. Du musst dich also schlau machen
mit welchem Compiler das eclipse c++ plugin arbeitet und dann das dementsprechende
Makefile selber schreiben. Da suchst du am betsen bei http://www.google.de nach 
Musterbeispielen für den entsprechenden Compiler...

Gruß

RedWing

//edit: Wieso, wenn dein Prof eclipse verwendet, lädst du dir die IDE nicht einfach runter
versuchst deinen code im eclipse zum Laufen zu bringen und lässt dir das makefile 
dann von eclipse erstellen?


----------



## vault-tec (1. Oktober 2004)

Hallo Whizzle.

Also, hab das mal nachgeschlagen.
Eine make-File sieht ungefähr so aus:


```
myprog: xxx.o yyy.o zzz.o myprog.o
      gcc -o myprog xxx.o yyy.o zzz.o
xxx.o: xxx.c xxx.h
      gcc -c xxx.c
yyy.o: yyy.c yyy.h xxx.h zzz.h
      gcc -c yyy.c
zzz.o: zzz.c zzz.h
      gcc -c zzz.c
myprog.o: myprog.c xxx.h yyy.h zzz.h
      gcc -c myprog.c

clean:
      rm -f *.o myprog
```

Dabei folgendes zur Erklärung:

In den Zeilen mit dem ':' werden die Abhängigkeiten festgehalten, z.B. dass das End-Programm myprog abhängig ist von sämtlichen .o-Dateien, d.h. ändert sich in einer von ihnen etwas, wird myprog neu kompiliert beim Aufruf der make-File.
In den Zeilen jeweils unter denen mit ':' ist der TAB vor dem Compiler-Aufruf zu beachten.
Der hier angegebene Compileraufruf gilt für einen Linux-Compiler (gcc), an dieser Stelle musst du den enstprechenden Aufruf für deinen Compiler setzen (z.B. bcc).
Die Header-Dateien wie z.B. zzz.h müssen zwar in der Abhängigkeitenliste für das jeweilige Compiler-Ziel angegeben werden, bei den Compilern, die ich kenne aber nicht im Compiler-Aufruf.
Unter der "clean:"-Zeile musst du den Linux-Befehl zum aufräumen durch einen entsprechenden DOS-Befehl ersetzen.
Auch kann es sein, dass du myprog mit einem ".exe" versehen muss, damit der Compiler unter Windows dein make-File versteht.
Das make-File selber musst du als "make.bat" schreiben, da Shell-Skripte unter DOS im Normalfall diese Endung tragen.
Soviel also mal zum make-File im Eigenbau.
Ich hoffe, es bringt dir was   

Gruß, Niko


----------



## Whizzle (2. Oktober 2004)

Vielen vielen Dank, das hat geholfen!


----------



## vault-tec (12. November 2004)

Hallo nochmal.

Meine obigen Erklärungen entnahm ich ja meinen Studien-Unterlagen.
Für alle, die noch eine genauere Einführung und/oder Erklärung über Make-Files wollen:
Ich bin hier  heute durch Zufall drübergestolpert. 

Viel Erfolg damit, Niko


----------

