Automatický překlad - Make
Vytvořte soubor Makefile, který zajistí vytvoření programu generator a filtrator.
Zdrojové soubory pro tyto programy jsou zde projekt.zip. Makefile, který máte vytvořit je v základním adresáři projekt.
Kromě uvedeného cíle je nutné, aby měl Makefile níže specifikované vlastnosti.
Podrobné zadání
Makefile:
- cíl
allvytvoří programyfiltratoragenerator - cíl
filtrator- Program
filtratorvznikne překladem modulůfilter/filter.c,filter/globbing/bracket.cafilter/globbing/glob.c. - Všechny .o soubory budou umístěny v adresáři
build, který bude vytvořen ve stejném adresáři, ve kterém jsou adresářegenerateafilter. V adresářibuildsi můžete vytvořit libovolné podadresáře, tedy například podadresářefilterafilter/globbing. - Výsledný program
filtratorbude přímo v adresáři build.
- Program
- cíl
generator- Program
generatorvznikne překladem modulůgenerate/generate.c,generate/random_pat.c,generate/random_str.c - Všechny .o soubory budou umístěny v adresáři
build, který bude vytvořen ve stejném adresáři, ve kterém jsou adresářegenerateafilter. V adresářibuildsi můžete vytvořit libovolné podadresáře, tedy například podadresářgenerate. - Výsledný program
generatorbude přímo v adresáři build.
- Program
- cíl
cleansmaže všechny vytvořené soubory .o, programy, i výsledek běhů programu a také adresářebuildaresult - cíl
runspustí programgeneratorspojený rourou s programemfiltratora výsledek uloži do adresářeresultjakotest_out.txt. Adresářresultvytvoří ve stejném podadresáři, jako jsou adresářebuild,filteragenerate. Cílrunzajistí vytvoření aktuální verze programufiltratoragenerator. - make pro kompilaci nastaví překladač gcc
- make k již nastaveným příznakům CFLAGS přidá přepínače -Wextra, -Wall a -fno-common.
Soubor Makefile bude umístěn ve hlavním adresáři projektu. V stažené verzi již soubor Makefile existuje a obsahuje text TODO.
Adresářová struktura projektu
Konečná adresářová struktura celého projektu po spuštění cíle run bude následující:
projekt/
├── generate # Zdrojove soubory pro program generator
│ ├── generate.c # modul obsahujici main
│ ├── random_pat.h # hlavickovy soubor pro modul random pat
│ ├── random_pat.c # modul generujici nahodny pattern
│ ├── random_str.h # hlavickovy soubor pro modul random str
│ └── random_str.c # modul generujici nahodny retezec
├── filter # Zdrojove soubory pro program filtrator
│ ├── filter.c # modul obsahujici main
│ └── globbing
│ ├── bracket.h # hlavickovy soubor pro modul bracket
│ ├── bracket.c # modul testujici vycet znaku
│ ├── glob.h # hlavickovy soubor pro modul glob
│ └── glob.c # modul testujici, zda retezec odpovida vzoru
├── build # Adresar pro .o, pripadne i pro .d soubory a programy
│ ├── filtrator # program filtrator
│ ├── generator # program generator
│ └── ... # ostatni obsah je na Vasem uvazeni
├── result # Adresář pro výstupní soubory
│ └── test_out.txt # soubor vytvořený jako cíl make run
└── Makefile # Váš domácí úkol
Testování
Při testování bude hodnoceno:
- splnění požadované funkčnosti
- vytvoření cílových programů
- funkčnost cíle clean
- funkčnost cíle run
- správné nastavení překladače
- spuštění kompilace při:
- změně zdrojových .c souborů
- změně hlavičkových souborů
Odevzdání
| Povinné zadání | |
|---|---|
| Název v BRUTE | 04-make |
| Odevzdávané soubory | Makefile |
| Argumenty při spuštění | žádné |