Powrót do listy plików
Makefile
#==============================================================================
# make all, cw3.run,cw3b.run, clean, dist
#==============================================================================
DIR = cw3
# Nazwy, ktorych bedziemy uzywac, tu: rdzenie nazw plikow
NAME1 = cw3
NAME2 = cw3b
# Program wykonawczy: dodajemy rozszerzenie .x, ale moze byc dowolne.
EXEC1 = $(NAME1).run
EXEC2 = $(NAME2).run
# Pliki powstale po kompilacji plikow zrodlowych, tzw. object files
OBJS1 = $(NAME1).o
OBJS2 = $(NAME2).o
# Dolaczane biblioteki (poza standardowymi).
# Makra moge byc puste, np. przewidziane na przyszlosc.
LIBS1 =
LIBS2 =
# Pliki naglowkowe
HEADS1 = $(NAME1).h
HEADS2 = $(NAME1).h
# Opcje kompilatora i linkera
CFLAGS = -Wall -O
LFLAGS = -Wall -O
# Kompilator i linker (czesto ta sama nazwa)
CO = gcc
LD = $(CO)
%.o: %.c %.h
$(CO) $(CFLAGS) -c $<
###############################################################################
# Regula zaleznosci - uaktualnij pliki po prawej stronie dwukropka.
# Na ogol zakladamy, ze w danym katalogu nie ma pliku o nazwie all,
# tzn. ze dana regula zawsze sie wykona.
# Gdyby plik o takiej nazwie przypadkowo znalazl sie w danym katalogu,
# to mozna wymusic bezwzgledne wykonanie sie ponizszej reguly wpisujac
# nazwe celu po slowie .PHONY:, np.
.PHONY: all
all: $(EXEC1) $(EXEC2)
###############################################################################
# Jawna regula zaleznosci - najpierw uaktualnij pliki po prawej stronie
# dwukropka, a potem wykonaj komende, ktora jest w nastepnej linijce (tu:
# wykonaj linkowanie).
# Zmienna wewnetrzna $@ oznacza cel, tzn. obiekt, ktory jest po lewej stronie
# dwukropka, tu: $(EXEC)
$(EXEC1): $(OBJS1) $(LIBS1)
$(LD) -o $@ $(LFLAGS) $(OBJS1) $(LIBS1)
$(EXEC2): $(OBJS2) $(LIBS2) $(EXEC1)
$(LD) -o $@ $(LFLAGS) $(OBJS2) $(LIBS2)
###############################################################################
###############################################################################
# Aby zapewnic bezwzgledne wykonanie niezaleznie czy istnieja pliki o danych
# nazwach (podobie jak dla all). Jezeli jestesmy pewni, ze plikow o takich
# nazwach nie bedzie w danym katalogu, to mozemy pominac ponizsza deklaracje.
.PHONY: clean dist
# run
# Uruchom program $(EXEC1); najpierw sprawdz, czy kod wykonawczy jest aktualny
#run: $(EXEC1)
run1: $(EXEC1)
./$(EXEC1)
#
run2: $(EXEC2)
./$(EXEC2)
# czyszczenie (tez "phony target")
clean:
rm -f *.o *~ *.run core a.out
# Archiwizacja i kompresja
dist: clean
(cd ../; tar -cvzf $(DIR).tar.gz $(DIR) )
składania pokolorowana przez
Code2HTML, v. 0.9.1
Materiały z Systemów Operacyjnych udostępnione zostały na zasadach licencji GPL w wersji 2.