Make: Porovnání verzí

Přidáno 54 bajtů ,  před 6 lety
m
Zaktivnění odkazů na deklarativní a imperativní programování (programovací jazyky), Oprava pár překlepů. Pouze jsem si nebyl jistý jak to je s formulací "mezi soubory" a nebo "mezisouborů".
(+Sufixová pravidla, +Automatické proměnné)
m (Zaktivnění odkazů na deklarativní a imperativní programování (programovací jazyky), Oprava pár překlepů. Pouze jsem si nebyl jistý jak to je s formulací "mezi soubory" a nebo "mezisouborů".)
Kód programu make prošel množstvím úprav a také byl několikrát zcela přepsán. Všechny varianty ovšem používaly stejný formát souboru Makefile a stejné základní [[Algoritmus|algoritmy]]. Postupem času vznikly varianty obsahující množství vlastních nestandardních vylepšení. Některé z nich jsou:
* [[BSD]] make, který je odvozen z verze [[Adam de Boor|Adama de Boora]] na verzi make schopnou vytvářet cíle paralelně. Tato verze si je schopná poradit s modifikacemi pro [[FreeBSD]], [[NetBSD]] a [[OpenBSD]]. Nejzajímavějšími vlastnostmi jsou podmínky a opakovací smyčky, které jsou aplikovatelné v parsovací části. Jsou využívány při programátorském přístupu ke konstrukci Makefile, který generuje cíle v [[runtime]].
* [[GNU]] make, který je součástí [[Linuxové distribuce|Linuxových distribucí]], je často zmiňován ve spojení s [[GNU build system|GNU build systémem]]. Jeho rozdíly od tradičního make jsou nejvíce zřetelné v porovnávání šablon v [[graf závislostí|grafech závislostí]] a sestavování cílů. Stejně tak tomu je u množství funkcí, které mohou přinutit make například získat seznam souborů v konkrétním adresáři.
* [[Microsoft]] nmake, dostupný ve [[Microsoft Windows|Windows]]. Z pohledu schopností nabízí oproti dvěma výše zmíněným variantám pouze základní vlastnosti. Microsoft nmake nemá nic společného s nmake z [[AT&T]] a [[Bell Labs]] pro [[Unix]].
 
Make využívá v souboru Makefile [[Syntaxe|syntaxi]], která používá [[tabulátor]] a [[Bílý znak|bílé znaky]]. Neexistuje mnoho [[Textový editor|textových editorů]], které by podporovaly názorné zobrazení rozdílů mezi bílými znaky a usnadnily tím tvorbu Makefile. Znaky tab také nebývají jednotně reprezentovány. Kvůli těmto problémům je syntaxe Makefile často kritizována. Některé projekty jako [[Apache Ant]] se snažily předělat lepší syntax make, což je to vcelku nepodstatné pro programátory využívající generátory Makefile.
 
S příchodem moderních IDE (hlavně na ne-unixových platformách) se velmi málo programátorů zaobírá manuální správou závislostí mezi souborůsoubory projektu. Úkol správy závislostí je přenesen na IDE, kde je automatizován. Stejně tak mnoho moderních programovacích jazyků používá jazykově-specifické způsoby výčtu závislostí, které jsou efektivněji rozpoznány s použitím jazykově-specifických kompilačních utilit.
 
''Make'' je považován za [[Deklarativní programování|deklarativní programovací jazyk]]<ref>{{Citace elektronické monografie
| url = http://phoenix.labri.fr/wiki/doku.php?id=an_overview_on_dsls
| datum přístupu = 2009-05-02
| jazyk = anglicky
| titul = Target Junior Makefiles
| vydavatel = robots.ox.ac.uk}}</ref> a tyto jazyky jsou někdy považovány za složitější pro programátory zvyklé na [[Imperativní programování|příkazové programovací jazyky]].<ref>{{Citace elektronické monografie
| url = http://hsivonen.iki.fi/honkala-xforms/
| datum přístupu = 2009-05-02
 
== Struktura Makefile ==
Makefile se skládá z řádků textu definujících závislost cíle na souborech. Cílem může být na množina souborů, nebo název pravidla. Např. výstupní soubor kompilace je značen jako cíl závislý na svých zdrojových souborech a souborech odkazovaných interně. Po řádku naznačujícího závislosti může následovat série příkazových řádků. Příkazové řádky se označují odsazením pomocí tabulátoru. Příkazové řádky definují transformaci vstupu do výstupu. Transformace se aplikují pouze tehdy, pokud je cíl starší než některý ze souborů/odkazů, na kterých je závislý. Základní struktura je:<ref name="whitespace">Je potřeba mít na paměti citlivost make na bílé znaky. Odsazené řádky příkladu jsou ve funkčním kódu odsazeny pomocí tabulátoru.</ref>
 
# Komentář
280

editací