Makefile: Unterschied zwischen den Versionen
| Zeile 10: | Zeile 10: | ||
$(CC) $(CC_OPTS) -c $ | $(CC) $(CC_OPTS) -c $ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | =Phony Targets= | ||
| + | I Manchmal will man make nur benutzen um ein paar Befehle | ||
| + | auszuführen, hier löscht make clean die auszuführbare Datei | ||
| + | und alle Objektdateien: | ||
| + | clean: | ||
| + | *rm -f hello | ||
| + | *rm -f *.o | ||
| + | I Hier erzeugt der Befehl aber keine Datei mit Namen clean | ||
| + | I Existiert aber eine Datei mit Namen clean funktioniert make | ||
| + | clean nicht mehr | ||
| + | I Um das das zu beheben m ̈ussen solche unechten Regeln mit | ||
| + | .PHONY gekennzeichnet werden: | ||
| + | .PHONY: clean | ||
| + | Externe Bibliotheken | ||
| + | Einige relevante Compileroptionen | ||
| + | Linkt externe Bibliothek libtest.so -ltest | ||
| + | Sucht nach Headern im Pfad -I/usr/local/include | ||
| + | Sucht nach Bibliotheken im Pfad -L/usr/local/lib | ||
| + | Beispiel dass fftw3 benutzt | ||
| + | example.c | ||
| + | #include <fftw3.h> | ||
| + | int main () { | ||
| + | fftw_complex *in = | ||
| + | fftw_malloc(sizeof(fftw_complex) * 10); | ||
| + | } | ||
| + | Dann kompilieren mit | ||
| + | gcc -c example.c -I/ordner/der/fftw3.h/enth ̈alt/ | ||
| + | gcc -o example example.o -lfftw3 | ||
| + | -L/ordner/der/libfftw3.so/enth ̈alt | ||
Version vom 6. Mai 2022, 08:04 Uhr
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 $
Phony Targets
I Manchmal will man make nur benutzen um ein paar Befehle auszuführen, hier löscht make clean die auszuführbare Datei und alle Objektdateien: clean:
- rm -f hello
- rm -f *.o
I Hier erzeugt der Befehl aber keine Datei mit Namen clean I Existiert aber eine Datei mit Namen clean funktioniert make clean nicht mehr I Um das das zu beheben m ̈ussen solche unechten Regeln mit .PHONY gekennzeichnet werden: .PHONY: clean Externe Bibliotheken Einige relevante Compileroptionen Linkt externe Bibliothek libtest.so -ltest Sucht nach Headern im Pfad -I/usr/local/include Sucht nach Bibliotheken im Pfad -L/usr/local/lib Beispiel dass fftw3 benutzt example.c
- include <fftw3.h>
int main () { fftw_complex *in = fftw_malloc(sizeof(fftw_complex) * 10); } Dann kompilieren mit gcc -c example.c -I/ordner/der/fftw3.h/enth ̈alt/ gcc -o example example.o -lfftw3 -L/ordner/der/libfftw3.so/enth ̈alt