„`html
Program Make
Make to program powłoki systemowej, który automatyzuje i przyspiesza proces kompilacji złożonych programów oraz bibliotek. Jest również użyteczny w przypadkach, gdzie zachodzi potrzeba przetwarzania wielu wzajemnie zależnych plików.
Opis działania
Program przetwarza plik reguł Makefile i na jego podstawie identyfikuje pliki źródłowe wymagające kompilacji. Dzięki temu, gdy zmienia się plik źródłowy, kompilowane są jedynie pliki zależne, co oszczędza czas i eliminuje konieczność kompilacji całego projektu.
Implementacje Make
Istnieje kilka popularnych implementacji narzędzia make, w tym:
- BSD make
- GNU make
- Microsoft make
- Borland make
Makefile
Makefile to plik reguł, który opisuje zależności pomiędzy plikami źródłowymi. Umożliwia przetwarzanie jedynie zmienionych plików oraz ich zależności, co znacznie skraca czas kompilacji. Format pliku zależy od implementacji, ale podstawowe zasady są zazwyczaj spójne.
W większych projektach informatycznych może być więcej plików reguł, z których każdy odpowiada za różne moduły. Domyślnie, program make przetwarza plik o nazwie Makefile
.
Przykładowy Makefile
Poniższa reguła ilustruje zależności między plikami:
helloworld.o: helloworld.c
cc -c helloworld.c -o helloworld.o
W tym przykładzie plik helloworld.o
zależy od helloworld.c
. Jeśli helloworld.c
jest nowszy, make wykona polecenie w kolejnej linii. Ważne jest, aby linia z poleceniem zaczynała się od znaku tabulacji.
Make umożliwia użycie symbolicznych nazw dla plików, takich jak:
- $@ – nazwa pliku wynikowego
- $< - nazwa pierwszego pliku zależnego
- $? – lista plików nowszych od wynikowego
Powyższy przykład można uprościć do:
helloworld.o: helloworld.c
cc -c $< -o $@
Przykładowy plik makefile, który wykonuje kompilację dwuetapową:
helloworld: helloworld.o
cc -o $@ $<
helloworld.o: helloworld.c
cc -c -o $@ $<
.PHONY: clean
clean:
rm -f helloworld helloworld.o
W tym przypadku, Tag PHONY wskazuje, że za nim nie kryje się plik.
„`