4. Makefile

Dokument: pdf (107.1 KB)
  • 9 stron
Opublikowany 2017-07-23 02:06:33

Instytut Mikroelektroniki i Optoelektroniki PW Materia¸y pomocnicze do przedmiotu Uýytkowanie Systemu Unix - 1 - Program make Opracowa¸: dr iný. Zbigniew Jaworski 1. Wst«p Program make jest standardowym narz«dziem dost«pnym w ærodowisku systemu UNIX u¸atwiajˆcym programiæcie prac« nad tworzeniem programu. Podstawowˆ funkcjˆ programu make jest zarzˆdzanie kompilacjˆ zbioru tekst—w •r—d¸owych sk¸adajˆcych si« na dany program przy zachowaniu minimalnego kosztu operacji. Oznacza to, ýe po zmodyfikowaniu cz«æci tekst—w •r—d¸owych, kompilacji zostanˆ poddane wy¸ˆcznie te modu¸y, kt—re sˆ od nich uzaleýnione. OÊtym, jakie polecenia naleýy wykona•, aby z tekst—w •r—d¸owych otrzyma• programy wykonywalne decydujˆ regu¸y transformacji. Regu¸y te sˆ wst«pnie zdefinione. Uýytkownik moýe teý tworzy• w¸asne regu¸y, kt—re uzupe¸niˆ lub zmieniˆ zestaw standardowy. Regu¸y wraz zÊopisem sposobu uzyskania programu wynikowego umieszcza si« w pliku sterujˆcym. Plik sterujˆcy powinien znajdowa• si« w katalogu, kt—ry zawiera teksty •r—d¸owe danego programu. Uruchomienie procesu kompilacji nast«puje poprzez wywo¸anie programu make. Program odczytuje wtedy ca¸ˆ zawartoæ• pliku sterujˆcego i na podstawie jego treæci, jak r—wnieý na podstawie wbudowanych regu¸ transformacji, treæci linii wywo¸ania, wartoæci zmiennych ærodowiska, czasu systemowego oraz czasu modyfikacji plik—w tworzy wynikowy ciˆg poleceÄ prowadzˆcy do uzyskania ýˆdanego celu. Nast«pnie polecenia te sˆ wykonane, przy czym wykonanie kaýdego z nich poporzedzone jest wypisaniem jego treæci. 2. Parametry wywo¸ania Wywo¸anie programu make ma nast«pujˆcˆ posta•: makeÊ[opcje]Ê[makrodefinicje]Ê[-f plik_sterujˆcy] [cel] W najprostszym przypadku linia polecenia zawiera tylko s¸owo make. Program pr—buje wtedy odczyta• polecenia z pliku sterujˆcego o standardowej nazwie: makefile, Makefile lub MakeFile. Jeæli w bieýˆcym katalogu nie ma pliku o takiej nazwie to zg¸aszany jest b¸ˆd. Jeæli plik sterujˆcy nosi innˆ nazw« to naleýy uýy• wywo¸ania makeÊÊ-fÊÊnazwa_pliku_sterujˆcego Instytut Mikroelektroniki i Optoelektroniki PW Materia¸y pomocnicze do przedmiotu Uýytkowanie Systemu Unix - 2 - W linii wywo¸ania moýna zdefiniowa• nowe lub zmieni• istniejˆce juý makrodefinicje, np.: makeÊÊÒCC=gccÓ Moýna teý poleci• osiˆgni«cie innego celu niý domyælny, np.: makeÊall,ÊÊmakeÊcleanÊÊlubÊÊmakeÊinstall. 2.1. Najcz«æciej uýywane opcje Spoær—d wielu opcji (o znaczeniu kt—rych moýna si« dowiedzie• wydajˆc polecenie: manÊmake) do najcz«æciej uýywanych naleýˆ : -d w¸ˆcza tryb szczeg—¸owego æledzenia, -f plik_sterujˆcy umoýliwia stosowanie innych niý standardowe nazw plik—w sterujˆcych, -i powoduje ignorowanie b¸«d—w kompilacji (stosowa• z ostroýnoæciˆ!), -n powoduje wypisanie poleceÄ na ekran zamiast ich wykonania, -p powoduje wypisanie makrodefinicji i regu¸ transformacji, - s wy¸ˆcza wypisywanie treæci polecenia przed jego wykonaniem. Opcje moýna ze sobˆ ¸ˆczy•. Np.: polecenie make -np powoduje wypisanie wszystkich regu¸ iÊmakrodefinicji oraz ciˆgu poleceÄ jakie powinne by• wykonane, aby uzyska• ýˆdany cel. Jest to pomocne w sytuacji, gdy programista chce sprawdzi• poprawnoæ• definicji zawartych w pliku sterujˆcym bez uruchamiania d¸ugotrwa¸ej kompilacji wielu plik—w. 3. Plik sterujˆcy Plik sterujˆcy zawiera definicje relacji zaleýnoæci, kt—re m—wiˆ w jaki spos—b iÊzÊjakich element—w naleýy stworzy• cel (program, bibliotek«, lub plik obiektowy) i wskazujˆ pliki, kt—rych zmiany implikujˆ wykonanie powt—rnej kompilacji poszczeg—lnych cel—w. Plik sterujˆcy moýe r—wnieý zawiera• zdefiniowane przez programist« regu¸y transformacji. 3.1. Definicja relacji zaleýnoæci Program make, stosujˆc wbudowane regu¸y transformacji, potrafi samodzielnie wykona• proste sekwencje poleceÄ, ale potrzebuje wskaz—wek programisty by utworzy• bardziej skomplikowane cele, takie jak program wykonywalny. Programista dokonuje tego Instytut Mikroelektroniki i Optoelektroniki PW Materia¸y pomocnicze do przedmiotu Uýytkowanie Systemu Unix - 3 - poprzez umieszczenie w pliku sterujˆcym definicji okreælajˆcych, z jakich element—w naleýy tworzy• program wynikowy iÊjak te elementy zaleýˆ od innych obiekt—w np. plik—w nag¸—wkowych. Wszystkie relacje zaleýnoæci pomi«dzy obiektami opierajˆ si« na por—wnywaniu czasu ostatniej modyfikacji plik—w oraz na sprawdzaniu czy dane pliki istniejˆ. Og—lna posta• definicji, jakˆ moýna umieæci• w pliku sterujˆcym, jest nast«pujˆca: cel1ÊÊ[cel2...]Ê:[:]ÊÊ[obiektyodniesienia] [ polecenia]ÊÊ[#komentarz] . . . [ polecenia]ÊÊ[#komentarz] ( gdzie oznacza znak tabulacji ). Kaýde polecenie umieszczone w definicji wykonywane jest w oddzielnej kopii shellÕa. Standardowo jest to Bourne shell (sh). Jeæli uýytkownik chce wywo¸ywa• inny rodzaj shellÕa, to musi przedefiniowa• zmiennˆ SHELL. Z¸oýone polecenia powinny by• zawarte w pojedynczym wierszu, gdyý tylko wtedy wykonane b«dˆ przez tˆ samˆ kopi« shellÕa. Elementarne sk¸adniki polecenia naleýy umieæci• obok siebie, oddzielajˆc je ærednikami, a ...

Tagi:
  • Makefile

Komentarze do: 4. Makefile • 0