Svrha korisni programi je odrediti automatski koji komadi velikog programa treba recompilirati i izdati naredbe za njihovo kompajliranje. Priručnik opisuje GNU implementaciju makea, koju su napisali Richard Stallman i Roland McGrath. Ti primjeri prikazuju C programe budući da su najčešći, ali možete koristiti izradu s bilo kojim programskim jezikom čiji se prevodilac može pokrenuti pomoću naredbe ljuske. U stvari, make nije ograničeno na programe. Možete ga koristiti za opisivanje bilo kojeg zadatka gdje se neke datoteke moraju ažurirati automatski od drugih kada god se ostale mijenjaju.
Bilješka: Ova stranica je ekstrakt dokumentacije GNU makea . Ažurira se samo povremeno jer GNU projekt ne koristi Nrff. Za potpuni, trenutni dokument, pogledajte info.info file make.info koja je izrađena od Texinfo izvorne datoteke make.texinfo.
Sintaksa i priprema korisnosti
napraviti f makefile opcija … cilj …
Da biste se pripremili za upotrebu, morate napisati datoteku pod nazivom makefile koja opisuje odnose između datoteka u vašem programu i navodi naredbe za ažuriranje svake datoteke. Tipično, izvršna datoteka se ažurira iz objekta datoteka, koje se pak čine sastavljanjem izvornih datoteka.
Jednom kada postoji prikladan makefile, svaki put kad promijenite neke izvorne datoteke, ovu jednostavnu naredbu ljuske napraviti dovoljno je izvršiti sve potrebne rekompilacije. Program make koristi podatkovnu bazu makefile i zadnje vrijeme izmjene datoteka kako bi odlučio koji se od datoteka treba ažurirati. Za svaku od tih datoteka izdaje naredbe zabilježene u bazi podataka.
Uslužni program izvršava naredbe u makefileu za ažuriranje jednog ili više ciljnih imena, gdje Ime je obično program. Ako nef opcija je prisutna, make će tražiti makefileGNUmakefile, makefile, iMakefile, u tom redoslijedu.
Obično biste trebali nazvati makefile ili makefile ili Makefile. (Preporuča se korištenje Makefilea jer se pojavljuje vidljivo blizu početka popisa imenika, u blizini drugih važnih datoteka kao što jePročitaj me.) Prvo ime označeno, GNUmakefile, nije preporučljivo za većinu makefiles. Trebali biste koristiti ovo ime ako imate makefile koji je specifičan za GNU make i neće biti razumljiv drugim verzijama makea. Ako je makefile -, pročitajte standardni unos.
napraviti uslužni program ažurira cilj ako ovisi o preduvjetnim datotekama koje su izmijenjene jer je zadnja promjena cilja ili ako cilj ne postoji.
Opcije
-b i -m opcije se zanemaruju za kompatibilnost s drugim verzijama izrade.
-C dir će se promijeniti u mapu direktorija prije čitanja makefilea ili radiš bilo što drugo. Ako je više-C opcije su specificirane, svaka se interpretira u odnosu na prethodno:-C/ -C itd je ekvivalentan-C / etc, To se obično koristi s rekurzivnim pozivima za izradu.
-D opcija će isprintati informacije o uklanjanju pogrešaka uz normalnu obradu. Informacije o uklanjanju pogrešaka navode koje se datoteke preuzimaju, za koje vrijeme se uspoređuju i s kojim rezultatima, koje se datoteke zapravo trebaju preuređivati, koja se implicitna pravila uzimaju u obzir i primjenjuju - sve je zanimljivo o načinu odlučivanja što treba učiniti ,
-e opcija daje varijable preuzete iz prioriteta okoliša iznad varijabli od makefiles.
f datoteka opcija koristi datoteka kao makefile.
-i opcija zanemaruje sve pogreške u naredbama koje su izvršene za preusmjeravanje datoteka.
-I dir opcija određuje imenik dir za traženje uključenih makefila. Ako je nekoliko-I opcije se koriste za određivanje više direktorija, direktorije se pretražuju u navedenom redoslijedu. Za razliku od argumenata za druge zastave make, direktorije s kojima je dodijeljen-I zastave mogu doći neposredno nakon zastave:-Idir dopušteno, kao i-I dir . Ova je sintaksa dopuštena za kompatibilnost s predprocesorom C-I zastava.
-j poslove opcija određuje broj radnih mjesta (naredbi) za istovremeni rad. Ako postoji više od jednog-j opcija, zadnji je učinkovit. Ako je-j opcija se daje bez argumenta, make neće ograničiti broj poslova koji se mogu istovremeno odvijati.
-k opcija nastavlja što je više moguće nakon pogreške; dok se cilj koji nije uspio, i oni koji ovise o njoj, ne mogu se vratiti, ostale zavisnosti tih ciljeva mogu se obraditi svejedno.
-l i Opterećenje opcije određuju da ne bi trebalo započeti nova radna mjesta (naredbe) ako su ostali radovi pokrenuti i barem je prosječni opterećenjeopterećenje (broj s pomičnim zarezom). Bez argumenta uklanja prethodno ograničenje opterećenja.
-n opcija ispisuje naredbe koje će biti izvršene, ali ih ne izvršava.
-o datoteka opcija ne remake datoteka čak i ako je stariji od svojih ovisnosti, i ne remake ništa zbog promjena datoteka , U osnovi, datoteka se tretira kao vrlo staro i pravila se ignoriraju.
-p opcija ispisuje bazu podataka (pravila i varijable vrijednosti) koja proizlazi iz čitanja makefila. Zatim se izvršava kao i obično ili kako je drugačije određeno.Ovo također ispisuje informacije o verziji koje daje-v (pogledajte dolje). Za ispis baze podataka bez pokušaja obnove bilo kakvih datoteka koristitenapraviti -p f / dev / null .
Q opcija postavlja način upitnika. Ne pokrećite nijednu naredbu niti ispisujte ništa, samo vratite status izlaza koji je nula ako su navedeni ciljevi već ažurirani, ali ne i drugačije.
-r opcija uklanja upotrebu ugrađenih implicitnih pravila. Također briše zadani popis sufiksa za pravila sufiks.
-s opcija smanjuje radnju. Ne ispisuje naredbe dok se izvršavaju.
-S opcija ukida učinak-k opcija. To nikada nije potrebno osim u rekurzivnom make-upu gdje-k može se naslijediti od vrhunske izvedbe putem MAKEFLAGS ili ako postavite-k u MAKEFLAGS u vašem okruženju.
-t opcija dodiruje datoteke (označava ih ažurnim datumima, a da ih zapravo ne mijenja) umjesto pokretanja njihovih naredbi. Ovo se koristi za pretvaranje da su zapovijedi učinjene, kako bi se zavarale buduće pozive na make.
-v opcija ispisuje inačicu make programa plus autorska prava, popis autora i obavijest da nema jamstva.
-w opcija ispisuje poruku koja sadrži radni direktorij prije i poslije druge obrade. Ovo može biti korisno za praćenje pogrešaka s kompliciranim gnijezdima rekurzivne proizvodnje naredbe.
W datoteka opcija pretvara da je cilj datoteka upravo je promijenjen. Kada se koristi s-n zastava, to vam pokazuje što bi se dogodilo ako biste izmijenili tu datoteku. Bez-n, gotovo je isto kao i prikazivanje adodir naredbu na danoj datoteci prije pokretanja izvođenja, osim što se vrijeme izmjene mijenja samo u mašti izrade.