Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Frage zu makefile

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.03.2009, 13:11 Uhr
banshee




Code:
# Let the compiler know what kind of filename extension we're going
# to be using.
#

.SUFFIXES:
.SUFFIXES: .cpp $(SUFFIXES)


Dies sind die ersten Zeilen eines makefiles. Welchen Sinn hat jetzt die erste Anweisung? Das ist ein Target ohne Abhängigkeiten und Regel, ist also immer aktuell und wird nie erzeugt.
Und was passiert in der zweiten Zeile? Was bedeutet das .cpp? Heißt das, dass das target von allen .cpp-Dateien abhängt? $(SUFFIXES) sieht aus wie ein Variablenzugriff, nur es gibt im ganzen makefile keine Variable namens SUFFIXES.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.03.2009, 16:46 Uhr
0xdeadbeef
Gott
(Operator)


.SUFFIXES ist ein spezielles Target wie .PHONY. Es steuert, welche Dateiendungen make erkennt - das ist im Zusammenhang mit Suffixregeln wichtig.


Code:
.SUFFIXES:


leert dabei die bekannte Suffixliste,

Code:
.SUFFIXES: .cpp $(SUFFIXES)


fügt der Suffixliste .cpp und die Default-Suffixe ($(SUFFIXES) enthält die Liste der make standardmäßig bekannten Suffixe) hinzu. Etwas merkwürdig ist das insofern, als dass $(SUFFIXES) .cpp bei allen mir bekannten makes schon enthält - vielleicht geht es hier darum, dass .cpp zuerst überprüft werden soll, um Zeit zu sparen oder so. Damit schieße ich aber ein bisschen ins Blaue.

Interessanter ist das, wenn du Dateiendungen verwendest, die make nicht von Haus aus bekannt sind - beispielsweise m4-Makros oder Java-Code. Und ja, ich weiß, dass man für Java üblicherweise ant verwendet, aber es geht hier nur um ein Beispiel. Das könnte dann so aussehen:

Code:
.SUFFIXES: .java .class

# Suffix-Regel:
.java.class:
        javac $<


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: