Prostředky pro automatizaci překladu Utilita make: Na základě definovaných závislostí vytváří cílové soubory ze souborů s nimi spřažených (dependent). Provádění závisí na datu souborů (akce jako překlad, linkování apod. se provádějí jenom tehdy, pokud cílový soubor neexistuje nebo je starší než soubory, z nichž se odvozuje.) Vzájemné závislosti i způsob, jak se ze spřažených souborů vytvářejí soubory cílové definuje uživatel v tzv. makefilu. Soubor Makefile: #komentáře MAKRO=definice cíl: zdroj ... [TAB]příkaz [TAB]příkaz ... Dále: implicitní pravidla, předdefinovaná makra. Provádění závisí na datu souborů! Makra: Některá makra jsou předdefinována, nejdůležitější: CC=cc - překladač jazyka C (doporučuji změnit na gcc) CCC=c++ - překladač jazyka C++ (doporučuji změnit na g++) CFLAGS - parametry pro překladač (doporučuji nastavit na -ansi -pedantic -Wall) Další makra můžeme v souboru Makefile definovat sami. Speciální makra: $@ - název souboru vytvářeného pomocí make $? - názvy změněných spřažených souborů $< - první "zdroj" za dvojtečkou $^ - všechny "zdroje" za dvojtečkou (oddělené mezerami) $* - prefix společný výslednému souboru a souborům s nimiž je spřažen $% - název odpovídajícího souboru .o $$ - použijeme, potřebujeme-li do Makefile zapsat samotný znak $ Při použití se makra zapisují např. $(CCC) $(CFLAGS) $? -o $@ Mnoho dalších možností: * systémem předdefinovaná pravidla * volba prováděných akcí * parametry na příkazovém řádku * podmíněné akce, vestavěné funkce aj. Podrobný popis např.: http://www.gnu.org/software/make/manual/html_node/index.html stručný popis http://vertigo.hsrl.rutgers.edu/ug/make_help.html nebo kniha M. Dressler: Programovací jazyky GNU. Příklad: # jednoduchý Makefile CCC=g++ CFLAGS=-g -ansi -pedantic -Wall all:prog1 prog1:prog1.o funkce1.o funkce2.o [TAB]$(CCC) $(CFLAGS) $^ %.o:%.cc prog1.h [TAB]$(CCC) $(CFLAGS) -c $< [prázdný řádek] Provedení: Příkaz make (popř. gmake). Je-li zadán bez parametrů, generuje první cíl definovaný v souboru Makefile.