Make

Make on tarkvaraarenduses kasutatav koosteprogramm.

Make koostab käivitatava programmi lähtetekstidest ja teekidest (ingl build-management). Juhised koostamiseks antakse ette Makefile'iga.

Ajalugu
Make'i esimese versiooni lõi 1976. aasta aprillis Stuart Feldman, kes töötas Bell Labsis, kus arendati Unix operatsioonisüsteemiM. Douglas McIlroy (1987). A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971-1986 , Bell Labs. Feldman sai 2003. aastal oma töö eest ACM'i tarkvara auhinna.

Feldmmanni inspiratsiooniks oli töökaaslasel tekkinud probleem koodist vigade kõrvaldamisel, sest käivitusfail oli kogemata jäänud muudatustega uuendamata:

Makefile
Make otsib praegusest kaustast makefile'i, näiteks GNU Make otsib faili nimega makefile, Makefile või GNUmakefile ja kutsub välja etteantud (või vaikimisi) sihtmärgi sellest failist.

Makefile'ide keel sarnaneb deklaratiivsele programmeerimisele. 

Reeglid
Makefile koosneb reeglites. Iga reegel algab sõltuvusreast, mis defineerib ühe sihtmärgi (ingl target) või mitu, kuigi tavaliselt ainult üks. Sellele järgneb koolon (:) ja valikuliselt ka komponendid (fail või teised sihtmärgid), millest sihtmärk sõltub. Sihtmärk (vasakul pool koolonit) sõltub komponentidest (paremal pool koolonit). Tavaliselt kutsutakse komponente ka sihtmärgi eeldusteks (ingl prerequisites).

Igale sõltuvusreale võivad järgneda TAB taandega käskuread, mis kirjeldavad, kuidas komponentidest koostada sihtmärk. Kui Make tuvastab, et mõnes komponendis on uuemaid muudatusi kui sihtmärgis, siis käsud jooksutatakse.
 sihtmärk [sihtmärk ...]: [komponent ...]
 TAB [käsk 1]
 	   .
 	   .
 	   .
 TAB [käsk n]
Esimene käsk võib paikneda ka sõltuvusreal, kui ta on eraldatud semikooloniga (;),
sihtmärgid: komponendid ; käsk
näiteks makefile sisuga
hello: ; @echo "hello world"
väljastab
make hello
"hello world"
Iga järgnev käsurida peab algama TAB sümboliga, et Make seda käsuna kohtleks. See võib viia kasutajavigadeni, sest TAB ja tühikute rida näevad visuaalselt välja identsed, aga käsuna töötavad ainult TAB algusega read. Just see osa Make'i süntaksist on saanud kõige rohkem kriitikat. Eric Raymond kirjeldas seda kui "üks suurimaid disaini vusserdisi Unixi ajaloos".

Järeltulijad
Make'i on ümberkirjutatud mitmeid kordi. Uued versioonid kasutavad reeglina sama failiformaati ja põhilisi algoritmide põhimõtteid, aga lisavad ka uusi ebastandardseid funktsioone. Näiteks:
 GNU Make (lühendatud gmake) on Make'i standardimplemetatsioon Linux ja macOSis. See on vajalik, et kasutada näiteks GNU Compiler Collection (GCC), Linux, Mozilla Firefox jpt. 
 Microsoft nmake on käsureal tööriist, mis tuleb kaasa Visual Studioga. . 

Viited

Kirjandus


Välislingid
 Makefile'i kasutamise õpetus

Kategooria:Tarkvaraarendus