Programowanie I C / C++
laboratorium 13 — Budowanie programów, make
Jarosław Piersa
Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika
2013-05-15
Duże programy
W projekcie mamy pliki źródłowe k100a.c
k100b-kolo.c k100b-kolo.h Polecenie kompilacji
gcc -Wall k100a.c k100b-kolo.c -lm
Zautomatyzowanie procesu
make
http://www.gnu.org/software/make/
plik konfiguracyjny: ./makefile
pozostałe źródła k100a.c, k100b-kolo.c, k100b-kolo.h Polecenie kompilacji
make
Składnia makefile
# s k l a d n i a
# - n a z w a C e l u
# - o b o w i a z k o w y d w u k r o p e k
# - e w e n t u a l n e w y m a g a n i a
# k 1 0 0:
# a k c j a :
# j e d e n tab w c i e c i a ( o b o w i a z k o w y
# p o l e c e n i a j a k i e m a j a sie w y k o n a c ) gcc - W a l l - O3 k 1 0 0 a . c k100b - k o l o . c - lm
Składnia makefile
Budowanie celów
# cel 1 - c a l y p r o j e k t ( w y m a g a c e l u 2):
k 1 0 0 : k 1 0 0 a . o k100b - k o l o . o
gcc - W a l l k 1 0 0 a . o k100b - k o l o . o - lm
# cel 2: t y l k o p l i k b
K100b - k o l o . o : k100b - k o l o . h k100b - k o l o . c gcc - W a l l - c k100b - k o l o . c - lm
# cel 3:
# ten cel c z y s c i p r o j e k t z b i n a r i o w c l e a n :
Składnia makefile
Budowanie celów
# W y b o r k o m p i l a t o r a CC= gcc
# F l a g i k o m p i l a t o r a , k t o r e b e d a sie p o w t a r z a c F L A G S= - W a l l - O3
# b i b l i o t e k i do k o m p i l a c j i L I B S= - lm
# p o w t a r z a n e f r a g m e n t y z o s t a l y z a s t a p i o n e k 1 0 0 : k 1 0 0 a . o k100b - k o l o . o
$ (CC) $ (F L A G S) k 1 0 0 a . o k100b - k o l o . o $ (L I B S)
K100b - k o l o . o : k100b - k o l o . h k100b - k o l o . c
$ (CC) $ (F L A G S) - c k100b - k o l o . c $ (L I B S) c l e a n :
rm - f *. o ./ a . out
Wywołanie
budowanie projektu m a k e
budowanie danego celu m a k e c l e a n wykorzystanie innego pliku
m a k e - f n a z w a _ p l i k u
Wywołanie rekurencyjne
pliki są umieszczone w podkatalogach:
+ Makefile + program.c + podkatalog
+ plik.h + plik.c + Makefile budowanie danego celu
p o d k a t a l o g :
cd p o d k a t a l o g && m a k e