4. Automatický překlad - Make

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 all vytvoří programy filtrator a generator
  • cíl filtrator
    • Program filtrator vznikne překladem modulů filter/filter.c, filter/globbing/bracket.c a filter/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áře generate a filter. V adresáři build si můžete vytvořit libovolné podadresáře, tedy například podadresáře filter a filter/globbing.
    • Výsledný program filtrator bude přímo v adresáři build.
  • cíl generator
    • Program generator vznikne 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áře generate a filter. V adresáři build si můžete vytvořit libovolné podadresáře, tedy například podadresář generate.
    • Výsledný program generator bude přímo v adresáři build.
  • cíl clean smaže všechny vytvořené soubory .o, programy, i výsledek běhů programu a také adresáře build a result
  • cíl run spustí program generator spojený rourou s programem filtrator a výsledek uloži do adresáře result jako test_out.txt. Adresář result vytvoří ve stejném podadresáři, jako jsou adresáře build, filter a generate. Cíl run zajistí vytvoření aktuální verze programu filtrator a generator.
  • 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 BRUTE04-make
Odevzdávané souboryMakefile
Argumenty při spuštěnížádné