Skip to main content

Porozumění příkazu Unix a Linux: make

Anonim

Účelem nástroje pro vytváření je automaticky určit, které části velkého programu je třeba kompilovat a vydávat příkazy k jejich překompilování. Manuál popisuje implementaci GNU značky, kterou napsali Richard Stallman a Roland McGrath. Tyto příklady ukazují programy C, protože jsou nejčastější, ale můžete použít s jakýmkoli programovacím jazykem, jehož kompilátor lze spustit pomocí příkazu shellu. Ve skutečnosti není výroba omezena pouze na programy. Můžete jej použít k popisu jakéhokoli úkolu, kdy některé soubory musí být aktualizovány automaticky od ostatních, kdykoli se ostatní změní.

Poznámka: Tato stránka je výňatek z dokumentace GNU makeu . Aktualizuje se pouze příležitostně, protože projekt GNU nepoužívá nroff. Úplnou aktuální dokumentaci naleznete v informačním souboru make.info, který je vytvořen ze zdrojového souboru texinfo make.texinfo.

Syntaxe a příprava použití

udělat -F makefile volba … cílová …

Chcete-li se připravit na použití značky, musíte napsat soubor nazvaný makefile, který popisuje vztahy mezi soubory v programu a uvádí příkazy pro aktualizaci každého souboru. Obvykle je aktualizován spustitelný soubor z objektových souborů, které jsou zase zpracovány kompilací zdrojových souborů.

Jakmile existuje vhodný makefile, pokaždé, když změníte některé zdrojové soubory, tento příkaz prostého shellu udělat stačí provést všechny potřebné recompilace. Zpracovatelský program používá databázi makefile a poslední modifikační časy souborů a rozhoduje, který z těchto souborů je třeba aktualizovat. Pro každý z těchto souborů vydá příkazy zaznamenané v databázi.

Nástroj pro vytváření příkazů provede příkazy v makefile k aktualizaci jednoho nebo více cílových jmen, kde název je obvykle program. Jestli ne-F možnost je přítomna, make bude hledat makefilesGNUmakefile, makefile, aMakefile, v tomto pořadí.

Normálně byste měli volat makefile buď makefile nebo Makefile. (Doporučujeme použít Makefile protože se objevuje prominentně blízko začátku výpisu adresáře, v blízkosti dalších důležitých souborů, jako jeREADME.) První značka s názvem GNUmakefile se nedoporučuje u většiny makefile. Tento název byste měli používat, pokud máte makefile, které je specifické pro GNU make a nebude to pochopitelné v jiných verzích značky. Je-li makefile -, čte standardní vstup.

The udělat nástroj aktualizuje cíl, pokud závisí na předpokládaných souborech, které byly upraveny od posledního úpravy cíle nebo pokud daný cíl neexistuje.

Možnosti

The -b a -m možnosti jsou ignorovány z důvodu kompatibility s jinými verzemi značky.

-Dir se změní na adresář dir předtím, než budete číst makefile nebo dělat něco jiného. Pokud je více-C jsou zadány možnosti, každý je interpretován ve vztahu k předchozímu:-C/ -C atd je ekvivalentní-C / atd. To se obvykle používá s rekurzivními invokacemi značky.

The -d možnost ladí informace o ladění kromě běžného zpracování. Informace o ladění informují o tom, které soubory jsou zvažovány pro remakování, o čem se soubory porovnávají a jaké výsledky, které soubory je třeba opravit, jaké implicitní pravidla jsou brány v úvahu a jaké jsou aplikovány - všechno zajímavé o tom, jak rozhodnout, co dělat .

The -E volba udává proměnné převzaté z přednosti prostředí nad proměnné z makefile.

The -F soubor možnost použití soubor jako makefile.

The -i ignoruje všechny chyby v příkazu spuštěném k úpravám souborů.

The -I dir volba určuje adresář dir k vyhledání zahrnutých makefile. Pokud je několik-I volby slouží k zadání několika adresářů, adresáře jsou vyhledávány v uvedeném pořadí. Na rozdíl od argumentů k jiným značkám značky, adresářům daným-I příznaky mohou přijít přímo za vlajkou:-Idir je povoleno, stejně jako-I řídím . Tato syntaxe je povolena pro kompatibilitu s C preprocesorem-I vlajka.

The -j úlohy volba určuje počet úloh (příkazů) ke spuštění současně. Pokud je více než jedna-j poslední možnost je účinná. Pokud-j možnost je uvedena bez argumentu, nebude omezovat počet úloh, které mohou běžet současně.

The -k volba pokračuje co nejvíce po chybě; zatímco cíl, který selhal, a ty, které na něm závisí, nelze provést, ostatní závislost těchto cílů může být zpracována stejně.

The -l a -l zatížení volby specifikují, že při spuštění jiných úloh a při zatížení minimálně by neměly být spuštěny žádné nové úlohy (příkazy)zatížení (číslo s plovoucí desetinnou čárkou). Bez argumentu odstraní předchozí limit zatížení.

The -n volba vytiskne příkazy, které budou provedeny, ale nevykonává je.

The soubor volba neprovádí úpravu soubor i když je starší než její závislost a nic nereformuje kvůli změnám soubor . V podstatě je soubor považován za velmi starý a jeho pravidla jsou ignorována.

The -p volba vytiskne databázi (pravidla a hodnoty proměnné), které jsou výsledkem přečtení souboru makefiles. Potom se provede jako obvykle nebo jinak.Toto také vytiskne informace o verzi, které daná položka-proti přepínač (viz níže). Chcete-li vytisknout databázi, aniž byste se pokoušeli předělat nějaké soubory, použijteudělat -p -f / dev / null .

The -q možnost nastaví dotazovací režim. Nespouštějte žádné příkazy ani nevytiskněte nic, stačí vrátit stav ukončení, který je nulový, pokud jsou stanovené cíle již aktuální, jinak nenulové.

The -r volba eliminuje použití vestavěných implicitních pravidel. Také vymaže výchozí seznam přípon pro příponová pravidla.

The -s volba umlčí operaci. Nevytiskne příkazy při jejich spuštění.

The -S volba zruší účinek-k volba. Toto není nikdy nutné, kromě rekurzivních značek kde-k může být zděděno z nejvyšší úrovně pomocí MAKEFLAGS nebo pokud jste nastavili-k ve formátu MAKEFLAGS ve vašem prostředí.

The -t možnost se dotýká souborů (označuje je aktuální, aniž by je skutečně změnily) namísto spouštění jejich příkazů. To se používá k předstírání, že příkazy byly provedeny, aby se oklamaly budoucí invokace značky.

The -proti volba vytiskne verzi vytvořeného programu plus autorská práva, seznam autorů a upozornění, že neexistuje žádná záruka.

The -w volba vytiskne zprávu obsahující pracovní adresář před a po dalším zpracování. To může být užitečné pro sledování chyb z komplikovaných hnízd rekurzivní značky příkazy.

The -W soubor možnost předstírá, že cíl soubor bylo právě změněno. Při použití s-n flag, to vám ukáže, co by se stalo, kdybyste tento soubor upravili. Bez-n, je to téměř stejné jako běh adotek příkazu k danému souboru před spuštěním příkazu, s tím rozdílem, že změna času se změní pouze ve fantazii výrobce.