Seitenleiste

Suffix-Regeln

Suffix-Regeln sind die wohl kürzeste Form, eine Regel zu formulieren. Der Lesbarkeit halber sollten in neuen Makefiles jedoch Patternregeln verwendet werden. Um einen ersten und schnellen Einblick zu erhalten und um vorhandene Makefiles zu verstehen, werden sie hier erklärt:

Folgende Regel erklärt, wie aus Dateien, die mit .c enden, Dateien entstehen, die mit .o enden.

.c.o:
	gcc -c $<

Diese Regel wie man .o Dateien aus gleichnamigen .c Dateien erzeugt. $< beschreibt den Namen der eingehende Datei. So kann mit dieser Regel die Datei hello.c mit dem Befehl gcc -c hello.c die Datei hello.o erzeugt werden.

Nehmen wir an, wir haben ein Ziel, dass von hello.o abhängt:

all: hello.o
	gcc hello.o

Mit der obenstehenden Suffix-Regel wird nun nach einer Datei hello.c gesucht, um mit Hilfe dieser Regel das Ziel zu konstruieren.

Ambassador:suffix xin$ make 
gcc -c hello.c
gcc -o hello hello.o
Ambassador:suffix xin$ ls -l
total 48
-rw-r--r--@ 1 xin  staff   158 15 Nov 16:22 Makefile
-rwxr-xr-x  1 xin  staff  8704 15 Nov 16:22 hello
-rw-r--r--  1 xin  staff    84 15 Nov 16:11 hello.c
-rw-r--r--  1 xin  staff   724 15 Nov 16:22 hello.o
Ambassador:suffix xin$ 

Ein Beispiel als Makefile

##
## C Files kompilieren.
############################################
 
CC=gcc
OBJECTS=hello.o
EXECUTABLE=hello
 
.c.o:
	$(CC) -c $<
 
all: $(OBJECTS)
	$(CC) -o $(EXECUTABLE) $(OBJECTS)
 
rebuild: clean all	
 
clean:
	rm -f *.o
	rm -f $(EXECUTABLE)

Download: Beispielcode und Makefile