Øízený pøeklad - make



Podobné dokumenty
PB071 Úvod do jazyka C

Vytváøení sí ového diagramu z databáze: pøíklad

PESprint. TISKOVÁ BRÁNA SYSTÉMU PES aplikace pro komunikaèní procesor - PES-CP24/PRINT


TERM 4MK. Univerzální regulaèní systém. Charakteristika. ZPA EKOREG s.r.o. Ústí nad Labem

PESexcl. PODPORA PRO VÝMÌNU DAT S APLIKACÍ MICROSOFT EXCEL s využitím DDE serveru PESdde


0.1. Titul. Grafický manuál firmy Y E L L O W P I G

Ovládání a řízení kolejiště

Obsah. Windows 95 je vaše. Windows si pamatují, kam co patøí. O knize 1



Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Otevøený výukový program. Interaktivní výuka. 4.2 Professional. Pøíruèka správce programu





1.2 Realizace èekání pomocí jednoduché programové smyèky Pøíklad 3: Chceme-li, aby dítì blikalo baterkou v co nejpøesnìjším intervalu, øekneme mu: Roz

kap..2 Plochy (Surfaces) Plochy jsou rozšíøením NURBS køivek. Zatímco køivka NURBS používala jednorozmìrnou interpolaci (U), u ploch je navíc pøidán d

OPTIMALIZACE FUNKCE GENETICKÝM ALGORITMEM



KOMUNIKAÈNÍ DDE SERVER PRO AUTOMATY MICROPEL VERZE 2.3 POPIS ROZHRANÍ A OVLÁDÁNÍ



Zaèínáme hrát Souèástí hry je herní deska (japonsky goban) se ètvercovou sítí Pro zaèáteèníky



Otevøený výukový program. Interaktivní výuka. 4.2 Professional. Pøíruèka uživatele


Posuzování vlivù na životní prostøedí (EIA)

MaR.LIB KNIHOVNA SIMPLE4 PRO TVORBU APLIKACÍ MÌØENÍ A REGULACE NA PLC MICROPEL

ÚSTAV SOCIÁLNÍ PÉÈE BRTNÍKY

Rozhodnutí. Zaøazení pozemních komunikací do kategorie místní komunikace

2. Komunitní plán sociálních slu eb mìsta Litomìøice na období let

Rozdílová dokumentace STEREO 16 dodatek


Dosud vyšlo: Sudoku pro každého 2

MARATHON MP3 pøehrávaè Uživatelská pøíruèka

baspelin CPM Popis komunikaèního protokolu CPM KOMPR

Multiplatformní GUI knihovna

Paralelní výpočty na clusteru KMD


Tabulka pro zaèáteèníky. Tabulka. zaèáteèníky. Zaèínáme s poèítaèem. Windows pro zaèáteèníky. Windows pro pokroèilé. Text pro zaèáteèníky

PESpro KOMPLEXNÍ VÝVOJOVÉ PROSTØEDÍ NA TVORBU A LADÌNÍ APLIKACÍ PRO AUTOMATY SYSTÉMU PES 02/2001



5.1 Øízení o žádostech týkajících se mezinárodních ochranných známek pøihlašovatelù z Èeské republiky

PESgsm. GSM BRÁNA SYSTÉMU PES aplikace pro komunikaèní procesor - PES-CP24/GSM

Univerzální mìøicí program EfLab

Internetová komunikace. Internetová komunikace. Zaèínáme s poèítaèem. Windows pro zaèáteèníky. Windows pro pokroèilé. Text pro zaèáteèníky

Senzor teploty. Katalogový list SMT

Horizontální betonárny

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Pomoc obìtem trestných èinù v Ostravì


3/ %,1'(& 83'1 &( &3 )XQNFH. + ; ; ; ; / ; ; + ; EH]H]PuQ\

Roman Neruda a Tomáš Holan C++ BUILDER V PØÍKLADECH Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnožo

Text pro pokroèilé. Text

Ant aneb Ferda Mravenec, práce všeho druhu

KDF KNIHA DOŠLÝCH FAKTUR GORDIC SOFTWARE * SUPERVIZOR * =============================== =============================== verze 7.

ÈÁST VIII - M I K R O È Á S T I CE A JEJICH CHOVÁNÍ



INTERAKTIVNÍ VÝUKA Verze 4.2

Zpracování textù poèítaèem


Join Multimedia Software. Autorský systém pro vytváøení multimediálních prezentací

Modifikace výchozího chování programu (souboru Admin.ini) Uživatelská příručka


KBD-SFTCFG Software pro digitální klávesnice øady IntuiKey. Návod k instalaci

Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch


Instalaèní pøíruèka programu PC Suite


1.0 Lekce 1: Seznámení s prostøedím. 2.0 Lekce 2: Základní opravy fotografie

ZNALECKÝ POSUDEK. o cenì nemovitých vìcí. è /

Regulátor TERM 2.0 NÁVOD K OBSLUZE A MONTÁ NÍ PØÍRUÈKA


DUM 20 téma: Test dávky


0RW\O3LFWXUH%R[ 7LPHU7LPHU


Jazyk symbolických adres

NRUE/A, NRUF/A (NRUT../A)


Tabulka pro pokroèilé. Tabulka. pokroèilé. Zaèínáme s poèítaèem. Windows pro zaèáteèníky. Windows pro pokroèilé. Text pro zaèáteèníky

Amcor. Odvlhèovaè Amcor D 550

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

AKTUALIZECE FIRWARE PRO SDS

Rozdílová pøíruèka pro verzi 4.1


TØÍDY NEBEZPEÈNÝCH VÌCÍ

ČÁST 1. Základy 32bitového programování ve Windows

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)


CORE FASHION. MP4 pøehrávaè Uživatelská pøíruèka

Ukazka knihy z internetoveho knihkupectvi

SU JOK TERAPIE PRO VŠECHNY

Transkript:

Øízený pøeklad Øízený pøeklad - make - nástroj make je pùvodnì UNIXový pomocný vývoj. nástroj vzniklý v AT&T asi 1975 - úèel: zjednodušit a zautomatizovat pøeklad a sestavování (linking) vìtších projektù, kde není zjevné napø. v jakém poøadí je tøeba ZK pøekládat - zároveò èásteènì dokumentuje mechanismus sestavení projektu (závislosti modulù, atp.) a umožòuje provést napø. migraci a instalaci - lze programovat bez make, ale není to dobrý nápad - pøeklad pomocí make je øízen souborem makefile - makefile je prostý textový soubor (ASCII), který obsahuje (i) komentáøe, (ii) pravidla (rules), (iii) cíle (targets), (iv) makra a (v) pøíkazy (commands) zapsané v pøedem dané podobì

Komentáøe Komentáøe v Makefile - komentáø zaèíná znakem # kdekoliv na øádce a konèí koncem øádky # The BIN and LIB macros define the # output directories for binaries and # compiled units. DCC = dcc32 -q # set the C compiler TASM = tasm32 BRCC = brcc32... - zvláštì složitìjší makefile je nutné dobøe komentovat, aby plnil i svojí "dokumentaèní" funkci

Pravidla - I. Pravidla (rules) - pravidla definují postup, který vede ke splnìní daného cíle (napø. pøeložení ZK do.obj nebo sestavení.exe) - obecný tvar pravidla je < cíl>: <øádka závislostí> TAB <pøíkazová øádka> file1.exe: file1.obj TAB link386 file1.obj... target1: dep1 dep2 dep3 dep4 target1: dep5 dep6 dep7 wcc386 $** $** se nahradí jmény souborù v øádce závislostí tento soubor je tøeba ke splnìní cíle file1.exe k jednomu cíli mùže existovat více øádek závislostí, ale jen jediná musí obsahovat pøíkaz. øádku

Pravidla - II. Explicitní pravidla - pravidla, která make používá pøi plnìní cílù file1.exe: file1.obj\ file2.obj link386 file1.obj file2.obj... daný cíl je definován více než jedním mylib.lib:: f1.obj f2.obj pravidlem echo Adding C files wlib mylib +f1.obj +f2.obj mylib.lib:: f3.obj f4.obj echo Adding ASM files wlib mylib +f3.obj +f4.obj pokraèuje na další øádce

Pravidla - III. Implicitní pravidla - obecná pravidla, která definují, jak vznikají soubory s urèitými pøíponami.c.obj: wcc386 $< myprog.obj:... pøípona zdrojového souboru pøípona cílového souboru } mùže pøedcházet cesta k adresáøi, kde se hledají zdrojové soubory, resp. ukládají cílové toto makro nahrazuje myprog.obj za myprog.c místo pøíkazù jen prázdná øádka, protože make už umí díky pøedchozímu implicitnímu pravidlu pøekládat.c do.obj

Cíle Cíle (targets) - výsledné akce a zkompilované soubory - cíl urèuje, co je výsledkem èinnosti make (napø..exe) - v makefile mùže být definováno množství cílù, nesmí být stejnì pojmenovány file1.exe: file1.obj bcc32 file1.obj file2.exe: file2.obj bcc32 file2.obj definice cíle je tvoøena pravidlem (viz pøedchozí výklad) - v této ukázce je cílem vytvoøení souboru file1.exe - je-li v øádce závislostí soubor (resp. cíl), který neexistuje, hledá se pravidlo, které ho vytvoøí (pokud neexistuje, hlásí make chybu) - cílem nemusí být nutnì jen soubor (viz dále tzv. symbolické cíle)

Symbolické cíle - I. Symbolické cíle (symbolic targets) - symbolický cíl umožòuje vykonat nìkolik akcí souèasnì, napø. vytvoøit nìkolik spustitelných souborù - v makefile mùže být definováno více symbolických cílù, make vytvoøí buï ten, který uvedeme na pøíkazové øádce, nebo první AllFiles: file1.exe file2.exe file1.exe: file1.obj bcc32 file1.obj file2.exe: file2.obj bcc32 file2.obj symbolický cíl - nebude vytvoøen soubor AllFiles, ale soubory file1.exe, file2.exe - po øádce definující symbolický cíl nenásledují pøíkazy - symbolický cíl musí mít jedineèné jméno (soubor takového jména nesmí v adresáøi existovat, jméno odpovídá požadavkùm OS na pojmenovávání souborù)

Symbolické cíle - II. Explicitní urèení symbolického cíle - parametrem make lze urèit, který symbolický cíl se má provést, napø. C:\>make all nebo C:\>make clean... all: train test gen_result... clean: echo A del *.*... pøíkazy OS, které se mají provést, aby byl cíl splnìn žádné závislosti, smazat soubory lze vždy (nic k tomu není potøeba) - uživatel nemusí parametr na pøíkazové øádce uvést => na prvním místì musí být správný symbolický cíl (zde cíl all)

Poøadí cílù - I. Poøadí cílù - na poøadí záleží test.obj: test.c wcc386 test.c test.exe: test.obj link386 test.obj test.exe: test.obj link386 test.obj test.obj: pøíkazy test.c OS, které se mají provést, wcc386 aby test.c byl cíl splnìn Otázka: Který z tìchto dvou makefile vytvoøí spustitelný soubor test.exe, vzniklý pøekladem ZK test.c?

Poøadí cílù - II. Poøadí cílù - na poøadí záleží test.obj: test.c wcc386 test.c test.exe: test.obj link386 test.obj test.exe: test.obj link386 test.obj test.obj: pøíkazy test.c OS, které se mají provést, wcc386 aby test.c byl cíl splnìn soubor test.c je k dispozici, není tedy tøeba hledat další cíle... soubor test.obj neexistuje - make hledá pravidlo na jeho vytvoøení... Odpovìï: Samozøejmì, že ten druhý - neuvede-li uživatel jinak, plní se první nalezený cíl, což je v prvním pøípadì pouze pøeklad do.obj

Makra - I. Makra v makefile < jméno>=<text makra> - make rozlišuje velká/malá písmena => MyMacro a mymacro jsou rozdílná makra MYEXT=.c SOURCE=f1.c f2.c f3.c - jméno makra max. 512 znakù, text makra max. 4096 znakù - makro lze nadefinovat i pøi volání make z pøíkazové øádky make -Dcommand="wcc386 -fp5" okolo = nejsou dovolené mezery - je-li makro stejného jména definováno v makefile, použije se to z makefile

Vestavìná makra - I. Vestavìná makra AS CC MAKE MAKEFLAGS $* $** $< $? $& $. $: $@ assembler pøekladaè C pøíkaz, kterým byl spuštìn make parametry make z pøíkazové øádky cesta\závislý cesta\závislý+pøíp cesta\závislý+pøíp cesta\závislý+pøíp závislý závislý+pøíp cesta-k-závislému cesta\cílový+pøíp nespoléhat na tato makra - liší se podle verze make Makro v implicitním v explicitním cesta\cílový vše-závislé+pøíp cesta\cílový+pøíp staré-závislé cílový cílový+pøíp cesta-k-cílovému cesta\cílový+pøíp

Vestavìná makra - II. Ukázka použití vestavìných maker CC=wcc386 CFLAGS=-fp5 -mf -ob,l....c.obj: $(CC) -c $(CFLAGS) $(INCLUDES) $** Pøesnou podobu vestavìných maker je nutné dohledat v dokumentaci použité verze make. Makra se mohou dramaticky lišit, napø. mezi GCC a Microsoft Visual C/C++. GCC Watcom Úplné jméno souboru ze závislostí $< $**

Pøíkazy Pøíkazy v makefile - pøíkazy OS clean: @echo Cleaning... @echo Y del *.* pøíkaz se provede, ale nevypíše do konzole install: main.exe @echo Installing... @ren main.exe win.exe @copy win.exe C:\Windows