156
zbudowana właśnie reguła domyślna. Tak więc dobrze jest jako pierwszą regułę wstawić regułę hudująrą końcowy plik wykonywalny; zwyczajowo regułę tą nazywa się all.
Należy pamiętać, by sekcji “co” nie wcinać, natomiast “reguły" wcinać dwoma spacjami. Część “od_czego” może być pusta.
Plik Makełile umożliwia też definiowanie pewnych zmiennych. Nie trzeba tutaj się już troszczyć o typ zmiennej, wystarczy napisać:
nazwa.zmiennej ■ wartość
W ten sposób możemy zadeklarować dowolnie dużo zmiennych. Zmienne mogą być różne nazwa kompilatora, jego |>arametry i wiele innych. Zmiennej używamy w następujący sposób: $(nazwa.zmiennej).
Komentarze w pliku Make file tworzymy zaczynając linię od znaku hasli (#).
Dość tej teorii, teraz zajmiemy się działającym przykładem. Załóżmy, że nasz przykładowy program nazywa się test oraz składa się z czterech plików: pierwszy.c drugi.c
trzeci.c cz.warty.c
Odpowiedni plik Makełile powinien wyglądać mniej więcej tak:
0 Mój plik makefile - wpisz 'make all' aby skompilować cały program CC - gcc
all: pierwszy.o drugi.o trzeci.o czwarty.o
$(CC) pierwszy.o drugi.o trzeci.o czwarty.o -o test
pierwszy.o: pierwszy.c
$(CC) pierwszy.c -c -o pierwszy.o
drugi.o: drugi.c
$(CC) drugi.c -c -o drugi.o
trzeci.o: trzeci.c
$(CC) trzeci.c -c -o trzeci.o
czwarty.o: czwarty.c
$(CC) czwarty.c -c -o czwarty.o
Widzimy, że nasz program zależy od 4 plików z rozszerzeniem .o (pierwszy.o itd.), potem każdy z tych plików zależy od plików .c, które |>rogram make skompiluje w pierwszej kolejności, a następnie połączy w jeikm program (test ). Nazwę- kompilatora zapisaliśmy jako zmienną, ponieważ powtarza się i zmienna jest sposobem, by zmienić ją wszędzie za jednym zamachem.
Zatem jak widać używanie pliku Makefik- jest bardzo proste. Warto na koniec naszego przykładu dodać regułę, która wyczyści katalog z plików .o:
clean:
rm -f *.o tost
Ta reguła spowoduje usunięcie wszystkich plików .o oraz naszego programu jeśli napiszemy make clean.
Możemy też ukryć wykonywane komendy alł>o dopisać własny opis czynności: clean:
Cecho Usuwam gotowe pliki ©rm -f *.o test