Środowisko programisty/Automatyzacja kompilacji - make: Różnice pomiędzy wersjami
Pierwsza wersja |
Podział na sekcje |
||
Linia 49: | Linia 49: | ||
Po za tym co jak będziemy chcieli zmienić opcje kompilacji, linkowania, itp. Będziemy musieli rozbudować nasz skrypt znacznie. Tymczasem gotową automatyzację udostępnia program <code>make</code> i skupimy się dalej na wykorzystaniu tego narzędzia do ułatwienia życia przy rekompilacji programu. | Po za tym co jak będziemy chcieli zmienić opcje kompilacji, linkowania, itp. Będziemy musieli rozbudować nasz skrypt znacznie. Tymczasem gotową automatyzację udostępnia program <code>make</code> i skupimy się dalej na wykorzystaniu tego narzędzia do ułatwienia życia przy rekompilacji programu. | ||
== Pierwszy makefile == | |||
== Reguły jak polecenia == | |||
== Zmienne == | |||
== Reguły schematy == |
Wersja z 15:05, 27 wrz 2006
Wstęp
Przypuśćmy, że piszemy program w C, który składa się z kilku plików, a mianowicie main.c
, komunikat.c
, komunikat.h
, test.c
, test.h
. Dla przykładu niech to będą bardzo proste źródła .
Kompilujemy je stopniowo. Wpierw tworzymy pliki *.o
z plików *.c
, a następnie je linkujemy. Czyli kolejne polecenia kompilacji wyglądają następująco:
gcc -Wall -c komunikat.c -o komunikat.o gcc -Wall -c main.c -o main.o gcc -Wall -c test.c -o test.o gcc -lm komunikat.o main.o test.o -o program
Dla ułatwienia kompilacji możemy sobie te polecenia zapisać do skryptu i uruchamiać ten skrypt za każdym razem, gdy zmodyfikujemy jakieś źródła. Skrypt ma jednak parę wad. Po pierwsze jeśli dodamy lub usuniemy pliki źródłowe C, to będziemy musieli przeedytować skrypt. Możemy z tym problemem sobie poradzić, jeśli w danym katalogu znajdują się tylko pliki źródłowe należące do danego programu. Wtedy wystarczy przerobić skrypt.
for f in *.c; do gcc -Wall -c $f -o ${f%c}o done gcc -lm *.o -o program
Druga wada skryptu jest taka, że kompilujemy za każdym razem wszystkie źródła, a przecież wystarczy skompilować tylko te co się zmieniły i powtórzyć linkowanie plików *.o
w jeden program. Taki skrypt jesteśmy w stanie napisać, ale zrobiłoby się to bardzo skomplikowane.
Po za tym co jak będziemy chcieli zmienić opcje kompilacji, linkowania, itp. Będziemy musieli rozbudować nasz skrypt znacznie. Tymczasem gotową automatyzację udostępnia program make
i skupimy się dalej na wykorzystaniu tego narzędzia do ułatwienia życia przy rekompilacji programu.