8268
edycji
(→Przykładowy plik Makefile: komentarze) |
(revert) |
||
=== Przykładowy plik Makefile ===
Dość tej teorii, teraz zajmiemy się działającym przykładem. Załóżmy, że nasz przykładowy program nazywa się
:pierwszy.c
:drugi.c
:trzeci.c
:czwarty.c
Odpowiedni plik Makefile powinien wyglądać mniej więcej tak:
# Mój plik makefile - wpisz 'make all' aby skompilować cały program
# (właściwie wystarczy wpisać 'make' - all jest domyślny jako pierwszy cel)
CFLAGS = -c -g -O -o # tutaj można dodawać inne flagi kompilatora▼
CC = gcc
LIBS = -lm # tutaj można dodawać biblioteki▼
all: pierwszy.o drugi.o trzeci.o czwarty.o
$(CC) pierwszy.o drugi.o trzeci.o czwarty.o -o test
pierwszy.o: pierwszy.c
clean:▼
$(CC) pierwszy.c
.c.o:▼
drugi.o: drugi.c
$(CC) drugi.c -c -o drugi.o
trzeci.o: trzeci.c
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 program make skompiluje w pierwszej kolejności, a następnie połączy w jeden 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 Makefile jest bardzo proste.▼
▲Zatem jak widać używanie pliku Makefile jest bardzo proste. Warto na koniec naszego przykładu dodać regułę, która wyczyści katalog z plików .o:
▲ clean:
rm -f *.o test
Ta reguła spowoduje usunięcie wszystkich plików .o oraz naszego programu jeśli napiszemy <tt>make clean</tt>.
Możemy też ukryć wykonywane komendy albo dopisać własny opis czynności:
@echo Usuwam gotowe pliki
@rm -f *.o test
Ten sam plik Makefile mógłby wyglądać inaczej:
▲ LIBS = -lm # tutaj można dodawać biblioteki
OBJ =\
pierwszy.o \
drugi.o \
trzeci.o \
czwarty.o
all: main
clean:
rm -f *.o test
▲ .c.o:
$(CC) -c $(INCLUDES) $(CFLAGS) $<
main: $(OBJ)
$(CC) $(OBJ) $(LIBS) -o test
Tak naprawdę jest to dopiero bardzo podstawowe wprowadzenie do używania programu make, jednak jest ono wystarczające, byś zaczął z niego korzystać. Wyczerpujące omówienie całego programu niestety przekracza zakres tego podręcznika.
|
edycji