Produkty Novinky Články Návody Kontakty

Make a makefile

Důležitým a pro střední až velké projekty i nepostratelným nástrojem je program make (máme na mysli GNU make) a řídící soubor makefile. Pomocí make a souboru makefile můžeme efektivně řídit proces sestavení naší aplikace ze zdrojového kódu až ve výsledný spustitelný soubor. V následujícím textu si ukážeme, jak make pracuje. Také se naučíme, jak vytvořit soubor makefile tak, aby popisoval postup sestavení naší aplikace srozumitelný pro programam make.
Na tomto místě je důležité zmínit jednu důležitou věc - program make je dostupný standardně pouze ve světě Linuxu/Unixu. Ano, make není standardní výbavou operačního systému Windows, proto řada integrovaných vývojových prostředí na make nespoléhá a používá jiný způsob, kterým programátor popíše způsob sestavení své aplikace. Existují sice různé balíčky unixových utilit, ale jejich funkčnost je často omezená. Často se lze setkat i s tím, že spolu s vývojovým prostředím pro Windows je dodáván i program make. Ale i zde platí, že ne všechny funkce standardního GNU make jsou touto alternativou podporovány. To ovšem neznamená, že nemá smysl program make blíže rozebírat a porozumět způsobu jeho fungování. Naopak, protože budeme vyvíjet pro Linux je vhodné používat všechny nástroje ze světa Linuxu.
Už jsme naznačili v úvodu, že samotný postup, chcete-li recept, jak ze zdrojového kódu sestavit spustitelný soubor a případně i jiné soubory (např. knihovny), je popsán v souboru makefile pomocí množiny smluvených pravidel. Asi si říkáte, co pak samotný program make vlastně dělá?
Po svém spuštění se make nejprve pokusí otevřít a načíst soubor makefile v aktuálním adresáři. Potom postupně v rámci procesu sestavení aplikace vykonává jednotlivé kroky předepsané v souboru makefile. Můžeme vlastně říci, že make interpretuje příkazy zapsané v souboru makefile.
Z výše uvedeného vyplývá několik zajímavých faktů:
  1. Program make je vlastně univerzální, protože jen interpretuje příkazy v souboru makefile. Díky tomu je univerzální i z hlediska použité cílové platformy. Proto nerozlišujeme nativní a křížový make. Pro všechny platformy máme jen jeden program make (GNU make).
  2. Naproti tomu soubor makefile je specifický pro každou aplikaci, protože postup sestavení se pro jednotlivé aplikace liší. Dokonce může existovat i několik různých souborů makefile pro stejnou aplikaci. Zpravidla je to tehdy, jestliže je aplikace sestavována pro více platforem.
  3. Program make musí umět volat kompilátor, linker a případně i další programy, jestliže má ze zdrojového kódu sestavit spustitelný soubor. Ano, program make tohle umí a zvládne toho mnohem více.
Je patrné, že možnosti programu make jsou velmi bohaté. S pomocí make můžeme mimo jiné například i nainstalovat výsledný spustitelný soubor do jeho cílového umístění, vytvořit a pak smazat dočasné pomocné soubory atd. My si však v následujícím textu představíme jen ty běžně používané základní možnosti. Zájemce o detailní porozumění problematiky odkážeme na manuál programu GNU make.