Josef Kufner

mfgen – Makefile Generator

Samostatný makefile

Původně byl mfgen bash script, který sestavoval výsledný makefile. Nakonec jsem bash vynechal ze hry a vše dělá přímo make. Takže to nyní vypadá tak, že je to jeden univerzální makefile, kterému se na začátku doplní pár drobností, jako např. použité knihovny a nastavení překladu (stejně jako původnímu scriptu).

Celé kouzlo spočívá v automatickém vytváření souboru .depencies, který sestavuje gcc před každým překladem a který je includován do makefile. Takže už žádné make dep. Výsledná binárka se jmenuje jako nadřazený adresář a kompiluje to všechny soubory s odpovídající příponou. Pokud chcete víc výsledných binárek, budete muset přepsat pravidlo all to těsně pod ním. Do toho zbytku by nemělo být potřeba zasahovat.

Makefile jako takový je členěn do tří částí: konfigurace, pravidla a kouzla. Konfigurace obsahuje vše co je obvykle potřeba nastavovat. Pravidla popisují základní strukturu projektu (co bude výsledkem překladu) a pár těch obvyklých akcí. Kouzla se starají o závislosti mezi soubory.

Pokud používáte něco jiného než GNU/Linux, možná si budete muset obstarat GNU Make – nevím jak moc si s tím poradí ostatní varianty programu make. Rozhodně uvítám jakoukoliv konstruktivní připomínku k funkčnosti na jiných systémech. Díky.

Download

Původní script (staré a neudržované)

mfgen je bash script, který generuje makefile pro malé programy v C. Konfiguraci si uchovává přímo v generovaném makefile. Nevyžaduje ke své činnosti nic víc než zdrojáky v adresáři ze kterého je spuštěn. Výsledná binárka je pojmenována stejně jako adresář ve kterém jsou zdrojáky. Od verze 2.0 je možno skript použít i na programy psané v C++. Stačí v poprvé (a neúplně – nenajde *.c) vygenerovaném makefile nastavit proměnné takto:
CC=g++
SRC_EXTENSION=cc
Po dalším spuštění mfgen je makefile již v pořádku a žádné další úpravy již nejsou potřeba. SRC_EXTENSION je přípona zdrojáků bez tečky.

Instalace

Script je určen k přibalení ke zdrojákům programu. Nemá tedy význam jej instalovat do systému. Vždy stačí zkopírovat k programu, případně vytvořit link.
  1. gunzip mfgen-*.gz
  2. cp mfgen-* adresář_s_programem/mfgen
  3. chmod +x adresář_s_programem/mfgen

Závislosti

Download