Make
make – program powłoki systemowej automatyzujący i przyspieszający proces kompilacji złożonych programów i bibliotek. Make nadaje się również do innych prac, które wymagają przetwarzania wielu plików zależnych od siebie.
Opis
Program przetwarza plik reguł Makefile i na tej podstawie stwierdza, które pliki źródłowe wymagają kompilacji. Zaoszczędza to wiele czasu przy tworzeniu programu, ponieważ w wyniku zmiany pliku źródłowego kompilowane są tylko te pliki, które są zależne od tego pliku. Dzięki temu nie ma potrzeby kompilacji całego projektu.
Implementacje
Istnieje kilka implementacji make jak np.:
Makefile
Makefile to plik reguł dla programu make. Zawiera opis zależności pomiędzy plikami źródłowymi programu. Umożliwia to przetwarzanie tylko tych plików, które się zmieniły od ostatniej kompilacji i plików od nich zależnych. Skraca to znacznie czas generowania pliku wynikowego.
Format pliku różni się w zależności od implementacji programu make, ale podstawowe reguły są takie same dla wszystkich odmian make.
W złożonych projektach informatycznych istnieje zazwyczaj kilka plików reguł, odpowiedzialnych za tworzenie poszczególnych modułów. Plik reguł jest często nazywany Makefile – program make wywołany bez parametrów rozpoczyna przetwarzanie pliku o takiej właśnie nazwie.
Przykładowy makefile
Poniższa reguła opisuje zależności między plikami:
helloworld.o: helloworld.c
cc -c helloworld.c -o helloworld.o
W pierwszej linii znajduje się informacja, że plik helloworld.o zależy od pliku helloworld.c - czyli jeśli helloworld.c jest nowszy, to program make powinien wykonać polecenie znajdujące się w linii poniżej zależności.
Linia opisująca polecenie musi zaczynać się od znaku tabulacji (inna składnia jest częstym błędem).
Make dla uproszczenia zapisu pozwala na użycie symbolicznych nazw dla plików, przykładowo:
- $@ nazwa pliku wynikowego
- $< nazwa pierwszego pliku od którego zależy wynik
- $? lista wszystkich plików które są nowsze niż wynik.
Powyższy przykład można przepisać:
helloworld.o: helloworld.c
cc -c $< -o $@
Poniżej znajduje się plik makefile, który:
- kompiluje plik źródłowy "helloworld.c" do pliku obiektowego, a plik obiektowy do wykonywalnego (kompilacja 2 etapowa)
- używa kompilatora C – cc
- Tag PHONY oznacza, że stojąca za nim nazwa nie jest nazwą pliku.
helloworld: helloworld.o
cc -o $@ $<
helloworld.o: helloworld.c
cc -c -o $@ $<
.PHONY: clean
clean:
rm -f helloworld helloworld.o
Zobacz też
- configure
- CMake – wieloplatformowe narzędzie do automatycznego zarządzania procesem kompilacji programu (tworzy plik Makefile).
Linki zewnętrzne
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.