Używam make i makefiles od wielu lat i chociaż koncepcja jest rozsądna, implementacja ma coś do życzenia.
Czy ktoś znalazł jakieś dobre alternatywy, które nie komplikują nadmiernie problemu?
Używam make i makefiles od wielu lat i chociaż koncepcja jest rozsądna, implementacja ma coś do życzenia.
Czy ktoś znalazł jakieś dobre alternatywy, które nie komplikują nadmiernie problemu?
scons
, luigi
(dostosowany do shouldsee/luck
) snakemake
, waf
. Istnieje wiele alternatyw dla języka Java, ale ta przestrzeń jest zbyt mała, aby je wszystkie zapisać.
Odpowiedzi:
sprawdź SCons . Na przykład Doom 3 i Blender wykorzystują to.
Mam wielu przyjaciół, którzy przysięgają, że CMake będzie działać na wiele platform:
Jest to system kompilacji używany między innymi dla VTK , który jest biblioteką C ++ z wieloplatformowymi powiązaniami Python, Tcl i Java. Myślę, że jest to prawdopodobnie najmniej skomplikowana rzecz, jaką znajdziesz przy tak wielu możliwościach.
Zawsze możesz wypróbować standardowe narzędzia automatyczne . Pliki Automake są dość łatwe do złożenia, jeśli używasz tylko systemu Unix i jeśli trzymasz się C / C ++. Integracja jest bardziej skomplikowana, a narzędzia automatyczne są dalekie od najprostszego systemu w historii.
doit to narzędzie w języku Python. Opiera się na koncepcjach narzędzi do kompilacji, ale jest bardziej ogólny.
Niektóre projekty GNOME migrowały do waf .
Jest oparty na Pythonie, podobnie jak Scons, ale także samodzielny - więc zamiast wymagać od innych programistów zainstalowania Twojego ulubionego narzędzia do kompilacji, wystarczy skopiować samodzielny skrypt kompilacji do swojego projektu.
Pamiętaj o ninja
narzędziu do kompilacji (wersja 1.8.2, wrzesień 2017 r.), Na które mają wpływ tup
i redo
.
Generator plików kompilacji cmake
(np. Dla Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) może również generować ninja
pliki kompilacji od wersji 2.8.8 (kwiecień 2012) i, afaik, ninja
jest teraz nawet domyślnym narzędziem do kompilacji używanym przez cmake
.
Ma on przewyższać make
narzędzie (lepsze śledzenie zależności i jest równoległy).
cmake
to już ugruntowane narzędzie. Zawsze możesz wybrać później narzędzie do kompilacji bez modyfikowania plików konfiguracyjnych. Jeśli więc w przyszłości zostanie opracowana lepsza kompilacja, która będzie obsługiwana przez cmake
Ciebie, możesz wygodnie na nią przejść.
Zwróć uwagę, że w przypadku c / c ++ czas kompilacji jest czasami ograniczony z powodu nagłówków zawartych w preprocesorze (w szczególności podczas korzystania z bibliotek zawierających tylko nagłówki, na przykład boost i eigen ), które, miejmy nadzieję, zostaną zastąpione propozycją modułów (w przeglądzie technicznym of c ++ 11 lub ostatecznie w c ++ 1y). Sprawdź tę prezentację, aby uzyskać szczegółowe informacje na ten temat.
tup
zależy od fuse
i posiadanie uruchomionego rozszerzenia jądra fuse, co, o ile mi wiadomo, sugeruje, że opiekunowie są szaleni. redo
nie był aktualizowany od dwóch lat. Polecam ninja
.
Napisałem narzędzie o nazwie sake, które próbowało uczynić pisanie rzeczy podobnych do pliku makefile bardzo łatwymi do czytania i pisania.
make
składni.
To w pewnym sensie zależy od tego, co próbujesz zrobić. Jeśli wszystko, czego potrzebujesz, to zależności docelowe w stylu make i wywołanie poleceń, to Make jest w rzeczywistości jednym z lepszych narzędzi do tego zadania. :-) Rake jest bardzo fajny, ale w niektórych prostych przypadkach może być niezręczny. Ant jest oczywiście miastem gadatliwości, ale ma lepsze wsparcie dla budowania języków podobnych do Java (w tym Scala i Groovy). Ponadto Ant jest dostępny wszędzie . To jest główny powód, dla którego go używam. Ponieważ działa konsekwentnie w systemie Windows, w rzeczywistości jest nawet bardziej wieloplatformowy niż Make.
Jeśli chcesz zarządzać zależnościami dla bibliotek typu Java, Maven jest kanonicznym wyborem, ale osobiście wolę Buildr o wiele bardziej. Jest szybszy i dużo łatwiejszy do dostosowania (oparty na Rake'u). Niestety, nie jest jeszcze tak wszechobecny jak Maven.
System tworzenia Rubiego nazywa się rake: http://rake.rubyforge.org/
Wygląda całkiem obiecująco.
Zawsze jest Ant: http://ant.apache.org , co osobiście uważam za przerażające. Jest to jednak de facto standard dla programowania w języku Java.
Nadal wolę robić po rozważeniu kilku alternatyw. Kiedy automatycznie generujesz zależności za pośrednictwem kompilatora lub czegoś takiego jak fastdep, nie pozostaje wiele do zrobienia. W szczególności nie chcę, aby mój skrypt kompilacji był powiązany z językiem implementacji i nie lubię pisać rzeczy w XML, gdy dostępne są bardziej czytelne alternatywy. Narzędzie, które ujawnia język ogólnego przeznaczenia, ma jednak swoje zalety, ale inny język interpretowany nie (afaik). Co jest nie tak z marką? może przemówić do twojego punktu widzenia odejścia od marki.
/ Allan
FlowTracer od RTDA to kolejny dobry wybór, który widziałem używany komercyjnie w środowisku na dużą skalę (dziesiątki tysięcy miejsc pracy): http://www.rtda.com/flowtracer-design-flow-infrastructure-software
Ma GUI, który pokazuje wykres zależności z kolorowymi polami dla zadań i owali dla plików. Kiedy liczba zadań i plików rośnie, narzędzie oparte na graficznym interfejsie użytkownika, takie jak FlowTracer, jest prawie niezbędne.
Początkowy koszt instalacji jest wyższy niż w przypadku marki. Istnieje krzywa uczenia się, jak skonfigurować pierwszy przepływ przy jego użyciu. Potem robi się szybciej.
Nie jestem pewien, czy zadajesz tutaj właściwe pytanie.
Szukasz uproszczonej wersji? W takim przypadku musisz poprosić kogoś, kto jest bardzo zaznajomiony z make, aby utworzył serię (M | m) akefile, która uprości twój problem.
A może chcesz przyjrzeć się podstawowej technologii? Czy chcemy wymusić architekturę typu projekt według kontraktu, która jest wbudowana i wymuszana w projekcie kodu? A może sam język, np. Ada i jego koncepcja specyfikacji (interfejsów) i treści (implementacji)?
W jakim kierunku się podążacie, z pewnością wpłynie na potencjalne skutki takiego pytania?
Zasadniczo nowe sposoby budowania systemów tylko z tych komponentów, które naprawdę się zmieniły, w porównaniu z przyjęciem nowych technologii, które mają takie mechanizmy wbudowane w projekcie.
Przepraszam, że to nie jest bezpośrednia odpowiedź. Chciałem tylko spróbować przekonać cię do oceny, którą ścieżką chcesz iść.
Twoje zdrowie,
Obrabować
make
jest zbyt uproszczone.