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ů:
- 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).
- 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.
- 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.
Co nás čeká ...
Sestavení aplikace
Kvůli snažšímu proniknutí do problematiky sestavení aplikace si na začátku připomeneme všechny základní kroky, z kterých je proces sestavení aplikace složen. Tak logicky najdeme místo v tomto procesu, kde program make bude velmi užitečný.
Struktura makefile
Jak jsme už poznali, soubor makefile je soubor s pravidly, která program make čte, postupně je interpretuje a tak dokáže sestavit výsledný spustitelný soubor. Ale co přesně makefile obsahuje? A jaká je jeho struktura? Odpovědí nám bude následující text.
Syntaxe makefile
Syntaxe souboru makefile popisuje jaké konstrukce, jaký jazyk můžeme při zápisu procesu sestavení aplikace použít. Jinými slovy jak deklarujeme proměnné, jak vkládáme komentáře a jak zapisujeme pravidla, která program make interpretuje. Zjistíme, že ve své základní syntaxi je psaní souboru makefile snadné a srozumitelné.
Syntaxe make
Pod pojmem syntaxe programu make máme na mysli způsob volání make. To znamená jaké volby můžeme při volání programu make použít, jak můžeme předefinovat obsah proměnných v souboru makefile atd.
Tipy a triky
V následujících odstavcích najdeme velmi jednoduché avšak učinné tipy, které nám pomůžou ulehčit sestavení naší aplikace.