vfnmake - generator Makefile'i mojej roboty
Webnull może, to ja też - oto "reklama" odświeżonej wersji jednego z moich tworów. ;)
Może zacznę od krótkiej lekcji historii. Jakiś czas temu napisałem w zsh bardzo prymitywny generator Makefile'i - miałem dość ich ręcznego pisania, bo było to jedynie durne klepanie. Skrypt się rozrastał i rozrastał, aż w końcu stwierdziłem, że zsh jest dla niego "za ciasne". Postanowiłem przepisać go do jakiegoś ambitniejszego języka. Mój wybór padł na Perla i z perspektywy czasu (jednego dnia :P) myślę, że był to dobry wybór.
W międzyczasie miałem okazję wypróbować CMake, który niestety mnie do siebie nie przekonał. W prostych przypadkach, klepania jest równie dużo co w Makefile'u, a do tego więcej do zapamiętania. Przeraża mnie też ilość śmieci, jakie mi wypluwa do katalogu z programem. Widać, że przy bardziej skomplikowanym projekcie sporo ułatwia, ale taki przypadek rzadko mnie interesuje. Może jeszcze obejrzę w najbliższym czasie Autotools, ale pewnie też się odbiję.
Mój program działa inaczej - większość rzeczy robi się sama, a resztę (np. biblioteki do dolinkowania) można łatwo dopisać w argumentach. Tworzy się tylko jeden plik konfiguracyjny (nie licząc Makefile'a), więc nie ma też mowy o śmietniku. Jeśli coś się zmieni w naszym programie, wystarczy po prostu jeszcze raz wygenerować Makefile jednym poleceniem i gotowe. Myślę, że jest to swoiste przeciwieństwo CMake - nie wątpię, że przy większym projekcie mojemu generatorowi zabraknie "mocy", ale do prostych programów nadaje się świetnie. Po prostu uruchamiam i po chwili kompiluję.
Przykładowe wywołanie programu wygląda tak:
vfnmake --lib ncurses --pkg gtkmm-2.4 --name moj_programik --cflag -pedantic
Późniejsze wywołania są już prostsze, bo program zapamiętuje argumenty i musimy pisać jedynie to, co chcemy zmienić.
Wersja perlowa jest jeszcze dość młoda i może zawierać błędy. Jeśli ktoś coś znajdzie, będę wdzięczny na informację.
Mam nadzieję, że komuś się to przyda.