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=ccPo 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.- gunzip mfgen-*.gz
- cp mfgen-* adresář_s_programem/mfgen
- chmod +x adresář_s_programem/mfgen
Závislosti
- bash
- gcc
- make