Svi ili gotovo svi (i ako nemate sreće) morali smo sastaviti program iz izvornog koda. Zapravo, u većini projekata dovoljno je napraviti ./configure && make && make install da biste instalirali program, ali vidjet ćemo različite alternative:
GNU Make
GNU Make je sistem kompilacije na niskom nivou, konfigurirano je nekoliko stvari i ne provode se testovi:
Prednosti:
- Vrlo rašireno
- Jednostavno za razumijevanje
- Brzo
Cons:
- Malo podesivo
- Teško za održavanje
- Ne vrši testove
make
BSD Make
BSD Make je još jedna verzija Makea koju trenutno koriste * BSD operativni sistemi. Razlikuje se od GNU Make-a, jer je najopsežniji BSD Make po funkcionalnosti, iako je manje raširen.
Prednosti:
- Brzo
- Jednostavno za razumijevanje
- Više funkcija od GNU Make
Cons:
- Nije raširen u svijetu Linuxa
- Ne vrši testove
- Malo podesivo
- Teško za održavanje
make
Auto alati
Autotools je službeni GNU sistem i generira skriptu koja se naziva configure koju moramo pozvati da generiramo odgovarajući GNU Make Makefile. Široko se koristi, međutim, sve više i više ljudi (uključujući i mene) smatra da je previše glomazan, težak, spor i ne baš kompatibilan.
Prednosti:
- Visoko podesiva
- Vrlo rašireno
Cons:
- Mala prenosivost između sistema koji nisu UNIX
- Izvršite previše testova (provjerite SVE, a SVE JE SVE)
- Vrlo sporo prilikom konfiguriranja
- Loša kompatibilnost unazad
./configure && make
CMake
(Moj omiljeni sistem) CMake je sistem koji nadoknađuje nedostatke Autotools-a u mnogim aspektima, poput njegove strašne kompatibilnosti i prenosivosti. Takođe poboljšavanje sistema za testiranje koji je visoko konfigurabilan za potrebe svakog projekta. Istina je da sve više projekata koristi CMake kao što su KDE, PortAudio, Ogre3D itd. Ovu vrstu sistema možemo prepoznati zahvaljujući CMakeLists.txt datoteci koja će generirati Makefile ili projekt za Eclipse ili CodeBlocks
Prednosti:
- Brzo
- Velika podrška za više platformi
- Testove možete definirati na vrlo prilagodljiv način
Cons:
- U početku je teško razumjeti
- Morate raditi sa apstrakcijom koja u početku može biti zastrašujuća
- Malo se širi iako malo po malo raste
cmake . && make
Q Make
QMake je sustav koji je Trolltech dizajnirao za kompajliranje projekata izrađenih u Qt-u. Na taj način qmake stavlja veliki naglasak na Qt i obično je format koji koriste IDE-i poput QtCreator. Prilično je popularan u Qt projektima, ali ga nema izvan ovog okruženja:
Prednosti:
- Vrlo dobro integriran sa Qt
- Brzo
- Dobra multiplatforma unutar Qt
Cons:
- Neobično izvan Qt aplikacija
qmake . && make
SCons
SCons je sistem za kompajliranje C / C ++ projekata zasnovan na Pythonu. Za razliku od Autotools, CMake ili QMake; SCons ne gradi Makefile. SCons je vrlo prilagodljiv, ali je možda najsporiji u jednostavnim operacijama
Prednosti:
- Jednostavna modifikacija
- Položite poštene testove
Cons:
- Malo širenja
- Sporo
scons
Boost Jam
Boost.Jam je verzija Perforce Jam-a koja se koristi u popularnim C ++ Boost bibliotekama, iako se sistem kompilacije može koristiti zasebno. Za razliku od GNU Make, Boost.Jam koristi Jamfiles, koji su poboljšana verzija Makefilesa. Prilično su popularni u okruženju BeOS / Zeta / Haiku.
Prednosti:
- Brzo
- Najkraće za pisanje
Cons:
- Malo širenja
- Poteškoće u izvođenju testova
bjam
Ninja
Ninja je sistem koji je Google razvio kako bi pružio ultrabrzi sistem izrade koji je prvobitno dizajniran da bude takav kao projekat Chromium. Ninja nije dizajnirana tako da ga je lako modificirati, prema vlastitim autorima mora se pronaći sistem koji generira Ninju. Preporučeni su CMake i gyp.
Prednosti:
- Muy rápido
Cons:
- Potreban vam je drugi sistem da biste stvorili Ninju
- Malo širenja
ninja
drugi
Možete koristiti bilo koji drugi sistem, poput vlastite bash ili python skripte. Postoje i generatori za druge strane jezike koji se mogu koristiti poput Gradle, Maven, gyp itd.
Make nije sistem kompilacije, on je generator binarnih datoteka (ili ciljeva) iz svog izvornog koda. Može se koristiti i kao pokretač zadataka.
Razlikujem se s vama da je BSD make širi u funkcionalnosti, GNU make je cjelovitiji i ima više funkcionalnosti. I to govorim iz vlastitog iskustva, u BSD uvijek moram instalirati GNU make jer je BSD make vrlo jednostavan u odnosu na GNU make.
Slažem se s vama da je Autotools prilično glomazan, radije bih koristio Makefile. Teško je ispraviti pogreške u generiranim datotekama automatskih alata.
Pozdrav!
Hvala na komentaru!
Po mom mišljenju GNU make je uvijek bio tradicionalniji i vjerniji originalnom make programu, a BSD make je uvijek bio inovativniji, ali možda sam primijetio i druge stvari prilikom usporedbe.
Automatski alati su zaista velika glavobolja. Kao saradnik Haiku operativnog sistema, morao sam prenositi softver sa automatskim alatima i to je pakao. Nije malo slučajeva da sam na kraju stvorio Makefile ili CMakeLists.txt prije nego što sam popravio taj nered.
Trenutno koristim Premake4, vrlo podesiv i jednostavan na osnovu Lua skripti. Pogledajte ako to ne znate.
Čestitke na članku, jednostavne i jezgrovite, izvrsna referenca.
'make check' koristi se za provjeru kompilacije nakon upotrebe make
Pozdrav