GNU/Linux >> Znalost Linux >  >> Linux

Proč jsou Makefily v Linuxu tak užitečné?

normal way pro Linux je použít soubor make.

Vyvinul se ze všech chyb, kterých se lidé dopouštěli při kompilaci stále složitějších aplikací ručně nebo pomocí podomácku vyrobených skriptů. Není triviální reprezentovat závislosti sestavení pro komplexní projekt. Make jednoduše nabízí standardizovaný způsob, jak takové závislosti specifikovat, a nástroj pro analýzu závislostí a spouštění souvisejících akcí sestavení.

Dokonce i uživatelské rozhraní, které zjednodušuje/automatizuje proces sestavování, můžete použít soubor make nebo něco podobného v zákulisí.

AKTUALIZACE

Pro ty, kteří se zajímají o komentář Automake, zde jsou dva různé pohledy na toto téma

http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool

http://www.scurrilous.com/blog/archives/2005/08/23/i-hate-automake/


Makefily za vás udělají tolik práce a často jsou výkonnější, než si lidé uvědomují. Vezměte si následující jednoduchý makefile

 all: helloworld

to je jeden řádek a (alespoň gnu make) by věděl, že má spustit cc -o helloworld helloworld.c Poté, jak projekt roste, přidáte další pravidlo:

helloworld: ui.o xml.o mailcomponent.o
   $(CC) $(CFLAGS) -o [email protected] [email protected] $^

a vědět, že běží

cc -c ui.c
cc -c xml.c
cc -c mailcomponent.c
cc -o helloworld helloworld.c ui.o xml.o mailcomponent.o

Pak řekněte, že chcete vše optimalizovat.

CFLAGS=-O2

na začátku souboru se o vás stará.

Když se projekt zvětší, make sleduje soubory, které se změnily a které se nezměnily, čímž se zabrání nadbytečným a časově náročným rekompilacím.

Makefiles jsou skvělé šetřící čas a o pokročilejších receptech jsem se ani nedotkl.


Linux
  1. 12 Užitečné příklady příkazů Wget v Linuxu

  2. Proč nejsou v Unixu/linuxu povoleny pevné odkazy na adresáře?

  3. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  1. Příkaz ls v Linuxu:17 vysvětlení užitečných příkladů

  2. Kdy je setsid() užitečné nebo proč potřebujeme seskupovat procesy v Linuxu?

  3. Proč je v Linuxu tolik /dev/tty?

  1. Proč je Linux zásadní pro edge computing

  2. Jak učinit starý počítač opět užitečným

  3. Proč je většina linuxových programů napsána v C?