Makefile: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Automatische Variablen= *$@ Name das Ziels *$^ Name aller Voraussetzungen, getrennt durch Leerzeichen *$< ist die erste Voraussetzung <syntaxhighlight lang="m…“) |
|||
| (11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =Automatische Variablen= | + | =Makefiles= |
| + | *Dateinamen für Makefile sind | ||
| + | **makefile | ||
| + | **Makefile | ||
| + | **GNUmakefile | ||
| + | *make -j N erlaubt N Jobs gleichzeitig | ||
| + | |||
| + | ==Variablen== | ||
| + | *Man kann Variablen in Makefiles definieren: | ||
| + | <syntaxhighlight lang="makefile"> | ||
| + | CC = gcc | ||
| + | CC_OPTS = -O2 -Wall -Wextra -std=c11 | ||
| + | HEADERS = header1.h header2.h | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | *Und dann benutzen: | ||
| + | <syntaxhighlight lang="makefile"> | ||
| + | main.o: main.c $(HEADERS) | ||
| + | $(CC) $(CC_OPTS) -c main.c | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ==Automatische Variablen== | ||
*$@ Name das Ziels | *$@ Name das Ziels | ||
*$^ Name aller Voraussetzungen, getrennt durch Leerzeichen | *$^ Name aller Voraussetzungen, getrennt durch Leerzeichen | ||
*$< ist die erste Voraussetzung | *$< ist die erste Voraussetzung | ||
| + | |||
| + | ===Beispiele=== | ||
<syntaxhighlight lang="makefile"> | <syntaxhighlight lang="makefile"> | ||
| − | |||
hello: main.o helper.o | hello: main.o helper.o | ||
$(CC) $(CC_OPTS) $^ -o $@ | $(CC) $(CC_OPTS) $^ -o $@ | ||
main.o: main.c $(HEADERS) | main.o: main.c $(HEADERS) | ||
$(CC) $(CC_OPTS) -c $ | $(CC) $(CC_OPTS) -c $ | ||
| − | <syntaxhighlight> | + | </syntaxhighlight> |
Aktuelle Version vom 6. Mai 2022, 08:13 Uhr
Makefiles
- Dateinamen für Makefile sind
- makefile
- Makefile
- GNUmakefile
- make -j N erlaubt N Jobs gleichzeitig
Variablen
- Man kann Variablen in Makefiles definieren:
CC = gcc
CC_OPTS = -O2 -Wall -Wextra -std=c11
HEADERS = header1.h header2.h
- Und dann benutzen:
main.o: main.c $(HEADERS)
$(CC) $(CC_OPTS) -c main.c
Automatische Variablen
- $@ Name das Ziels
- $^ Name aller Voraussetzungen, getrennt durch Leerzeichen
- $< ist die erste Voraussetzung
Beispiele
hello: main.o helper.o
$(CC) $(CC_OPTS) $^ -o $@
main.o: main.c $(HEADERS)
$(CC) $(CC_OPTS) -c $