Re: Makefile für Anfänger (viele Dateien compilieren/linken)?

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Markus Demleitner (msdemlei_at_gs.uni-heidelberg.de)
Date: 07. Nov 2001


On Wed, Nov 07, 2001 at 04:13:27PM +0100, Mark Seuffert wrote:
> nachdem ich jetzt das erste mal mit aufwendigeren Makefile selbst kämpfen muss
> (gestern nacht lange bei Google und man page geschmökert), wollte ich Euch mal
> nach Tips fragen.
>
> Ich hab ein relativ einfaches Projekt (OpenGL Grafikengine), bisheriges
> Makefile anbei - bitte nicht auslachen. :)
>
> Es besteht nur aus einigen Source-Dateien und einem Headerfile. Zu den
> Abhängigkeiten nix besonderes: Alle Source-Dateien hängen nur von dem
> entsprechend includeten Header ab (also keine Abhängigkeiten untereinander).
> Das Executable muss gelinkt werden falls sich eine Objectdatei geändert hat.
>
> Muss ich jetzt:
> 1. Für jede Source/Objet-Datei ein target anlegen...
> ansonsten nimmt er "g++ -c" anstatt "gcc -Wall -ansi -c"?
> 2. Für "make all" alle Object-Dateien einzelnd aufzählen...
> oder geht das auch eleganter (Liste mit Dateien)?
Üblicherweise erzeugt mensch die Regeln per makedepend in einem
eigenen Target (Vorsicht: Die default-Trennstrings sind auf
verschiedenen Architekturen verschieden) -- dann muss nur eine
Liste von Quelldateien vorgehalten werden.

Nett (aber etwas gmake-spezifisch) sind häufig auch pattern-rules:

%.dvi: %.tex
        tex %<

sorgt z.B. dafür, dass make bla.dvi weiß, was zu tun ist, ohne dass
eine explizite Regel
bla.dvi: bla.tex
vorhanden ist. Wenn dazu noch

%.ps: %.dvi
        dvips %<

%.ps: %.gif
        ppmtogif $< | pnmtops > $@ (oder so -- das ist nicht optimal:-)

dasteht, geht sogar
make bla.ps, und make guckt selbst, ob es das aus bla.gif oder bla.tex
machen soll.

Ums Aufzählen von Quelldateien kommt mensch natürlich so oder so
nicht ganz rum -- irgendwann muss der Linker halt wissen, was
er tun soll. Abkürzungen aller Art (auto-x) gibts natürlich,
aber da ist die Lernkurve doch ziemlich steil.

      Demi


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET