lukasz.proszek.info

Powrót do listy plików

Makefile

#==============================================================================
# make all, cw1.run, run, clean, dist
#==============================================================================
DIR = cw1
# Nazwy, ktorych bedziemy uzywac, tu: rdzenie nazw plikow
NAME = cw1
# Program wykonawczy: dodajemy rozszerzenie .x, ale moze byc dowolne.
EXEC  = $(NAME).run
# Pliki powstale po kompilacji plikow zrodlowych, tzw. object files
OBJS  = $(NAME).o
# Dolaczane biblioteki (poza standardowymi). 
# Makra moge byc puste, np. przewidziane na przyszlosc.
LIBS  = 
# Pliki naglowkowe
HEADS = $(NAME).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: $(EXEC)
###############################################################################
# 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) 
$(EXEC): $(OBJS) $(LIBS) 
  $(LD) -o $@ $(LFLAGS) $(OBJS) $(LIBS)
###############################################################################

###############################################################################
# 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: run clean dist
# Uruchom program $(EXEC1); najpierw sprawdz, czy kod wykonawczy jest aktualny
run: $(EXEC)
  ./$(EXEC)
# 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