Úvod do Autotools

V této kapitole se vám pokusím představit Autotools, aneb GNU build System. Povím vám, z čeho se skládá a k čemu se vám a uživatelům vašich projektů může hodit.

Co a k čemu je Autotools

Autotools je sada nástrojů, která vám může pomoci s vytvářením konfiguračního skriptu (configure) a makefile souborů. Skládá se z několika programů. Konfigurace pro autotools se zapisuje v makrech jazyka m4.

Prozatím jste se zabývali především tím, jak napsat zdrojové kódy a jak je přeložit. V kapitole o Makefile jste se naučili pracovat s programem make, který vám (a všem, co váš výtvor chtějí přeložit) ulehčuje práci s překladem.

Součástí autotools je automake, který vám pomůže vygenerovat Makefile soubor(y) na základě vašich zdrojových souborů (a trochy konfigurace).
A to nejen ledajaké Makefile, ale Makefile, které splňují GNU standard. Takový Makefile neobsahuje jen cíl pro přeložení a sestavení programu, ale i pro jeho instalaci a odinstalaci, nebo cíl pro vytvoření zagzipovaného balíčku vhodného pro distribuci. Dokáže i zkontrolovat, zda balíček obsahuje vše potřebné pro instalaci na cizým systému. A když to teď hodně zjednoduším, tak jediné, co k tomu všemu potřebuje, je název výsledného programu a seznam zdrojových souborů.

Pokud jste někdy instalovali program nebo knihovnu ze zdrojových souborů, nejspíše jste k tomu použili tzv. „svatou trojici“, tedy příkazy ./configure && make && make install.

Autotools vám pomůže vytvořit standardní configure skript, který obsahuje všechny volby požadované GNU standardem. Tento skript se v první řadě stará o prozkoumání systému, na kterém je spušťěn. Zjištuje, zda existují všechny potřebné hlavičkové soubory, knihovny a programy nutné pro překlad vašeho díla. Když je potřeba, dokáže vygenerovat hlavičkový soubor, který definuje různé makra podle toho, co o systému zjistil. Společně s automake vygeneruje příslušné Makefile soubory a dá uživateli možnost změnit cílové adresáře pro instalaci programu, jeho dat, případně hlavičkových souborů, pokud je instaluje se sdílenou knihovnu.

A toto všechno navíc dokáže udělat správně na různých operačních systémech. Je napsán tak, aby configure skript fungoval ve všech možných Linuxech/Unixech/BSD/OS-Xech, se kterými se autoři kdy setkali.

Hlavním cílem při použití autotools ale není ulehčit život vám, vývojářům, ale uživatelům vašich programů. Myslete prosím na to. Naučit se používat autotools není úplně triviální (tedy nebylo, dokud nevznikl tento kurz :-). Použití autotools může znamenat určité změny ve vašich zdrojových kódech, v organizaci souborů atp. Je to nutná daň za vše to dobré, co autotools přináší.

Použití autotools k vytvoření configure skriptu je také první krok k vytvoření binárního balíčku pro libovolnou linuxovou/unixovou distribuci.

S flexibilitou přichází komplexita.

Autotools je velice flexibilní. Jeho návrh je v podstatě velmi jednoduchý. Umožňuje vám dosáhnout téměř čehokoliv a to mnoha způsoby. To ale také znamená, že je GNU Build systém „velká bestie“. Nedá se proto jednoduše vysvětlit v jedné kapitole a dokumentace k autotools je velká. Dokumentace je super, pokud hledáte něco konkrétního, ale už ne tak super, abyste se z ní o autools učili. V této a v dalších kapitolách se vám pokusím předložit to nejdůležitější co o autoools musíte vědět, abyste jej mohli začít používat. Zbytek se už doučíte za pochodu.

CMAKE a další konkurence

Autotools je na Linuxu de facto standardní build systém. Existuje ale i konkurence. Jednou z nich je CMAKE.

CMAKE funguje na trochu jiném, jednodušším principu. Vstupem je jeden konfigurační soubor. Výstupem je projekt pro vybrané prostředí. V Linuxu to mohou být Makefile, ve Windows např. projekt pro Visual Studio, Code::Blocks či cokoliv co si vyberete (a co CMAKE podporuje).

I autotools můžete používat na Windows, ale v takovém případě musíte nainstalovat nějaké linux-like prostředí, abyste měli k dispozici bash, make a další nástroje, které autotools vyžaduje. To je trochu jako dbrat se levou rukou za pravým uchem. Zatímco pro Linux/Unix není lepší volba než autotools, pro Windows je určitě lepší CMAKE.

Pokud chcete, aby váš projekt fungoval jak v Linxu, tak ve Windows, ideální je použít pro Unix-like OS autotools a pro windows CMAKE. To je ale 2x více práce. S použitím CMAKE v Linuxu problém není, takže když použijete jen CMAKE, ušetříte si práci s autotools a nic moc tím asi nezkazíte.

96% lidí stále používá Windows oproti Linuxu. Takže 96% lidí vám bude doporučovat CMAKE. Já ale patřím k té 4% Linuxové menšině, která vám bude doporučovat autotools. Jste-li také linuxáci (nebo chcete být), využijete bohatě své znalosti bashe a získáte nástroj, ve kterém dokážete udělat cokoliv. Navíc použijete něco, co většina Linuxových uživatelů očekává (ne každý zná, umí použít a má nainstalovaný program cmake …).

Krom autotools a CMAKE exitují ještě další nástroje pro zjednodušení překladu a instalace, jako například qmake nebo scons. Na internetu určitě najdete spousty flamewars o tom, který je lepší (a na co). Můj názor se dá shrnout takto: Programujete pro Linux/Unix? → autotools. Programujete pro Windows? → vystačíte si s projektem ve Visual Studiu :-), nebo použijte CMAKE.

Komentář Hlášení chyby
Created: 24.12.2018
Last updated: 24.12.2018
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..