Reklama
Dzisiaj jest 10 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama
Reklama
Reklama

Make

„`html

Reklama

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.

Reklama

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.

„`

Reklama
Reklama