Svi ili gotovo svi (i ako nemate sreće) morali smo sastaviti program iz izvornog koda. Zapravo je u većini projekata dovoljno napraviti ./configure && make && make install da biste instalirali program, ali vidjet ćemo različite alternative:
GNU Make
GNU Make je sustav kompilacije na niskoj razini, konfigurirano je nekoliko stvari i ne provode se testovi:
Pros:
- Vrlo raširena
- Jednostavno za razumijevanje
- Rapido
Cons:
- Malo podesivo
- Teško za održavanje
- Ne provodi testove
make
Izrada BSD-a
BSD Make je još jedna verzija Makea koju trenutno koriste * BSD operativni sustavi. Razlikuje se od GNU Make-a, jer je najopsežniji BSD Make funkcionalnošću, iako je manje raširen.
Pros:
- Rapido
- Jednostavno za razumijevanje
- Više značajki od GNU Make
Cons:
- Nije raširen u svijetu Linuxa
- Ne provodi testove
- Malo podesivo
- Teško za održavanje
make
Automatski alati
Autotools je službeni GNU sustav i generira skriptu koja se naziva configure koju moramo nazvati kako bismo generirali 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.
Pros:
- Visoko podesiva
- Vrlo raširena
Cons:
- Niska prenosivost između sustava koji nisu UNIX
- Izvršite previše testova (provjerite SVE, a SVE JE SVE)
- Vrlo sporo prilikom konfiguriranja
- Loša kompatibilnost s unatrag
./configure && make
CMake
(Moj omiljeni sustav) CMake je sustav koji u mnogim aspektima nadoknađuje nedostatke Autotools-a, poput njegove strašne povratne kompatibilnosti i prenosivosti. Također poboljšanje ispitnog sustava koji se može visoko konfigurirati za potrebe svakog projekta. Istina je da sve više projekata koristi CMake kao što su KDE, PortAudio, Ogre3D itd. Ovu vrstu sustava možemo prepoznati zahvaljujući datoteci CMakeLists.txt koja će generirati datoteku Makefile ili projekt za Eclipse ili CodeBlocks
Pros:
- Rapido
- Izvrsna podrška za više platformi
- Testove možete definirati na vrlo prilagodljiv način
Cons:
- U početku 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 Napravi
QMake je sustav koji je Trolltech dizajnirao za kompajliranje projekata izrađenih u Qt-u. Na taj način qmake stavlja velik 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:
Pros:
- Vrlo dobro integriran s Qt
- Rapido
- Dobra multiplatforma unutar Qt
Cons:
- Rijetko izvan Qt aplikacija
qmake . && make
SCONOVI
SCons je sustav 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
Pros:
- Jednostavna preinaka
- Položite poštene testove
Cons:
- Malo širenja
- sporo
scons
Pojačaj.Jam
Boost.Jam je inačica Perforce Jam-a koja se koristi u popularnim C ++ Boost knjižnicama, iako se sustav 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.
Pros:
- Rapido
- Najkraće za pisanje
Cons:
- Malo širenja
- Poteškoće u izvođenju testova
bjam
Ninja
Ninja je sustav koji je Google razvio kako bi pružio ultrabrzi sustav izrade koji je izvorno dizajniran da odgovara projektu Chromium. Ninja nije dizajnirana tako da ga je lako modificirati, prema vlastitim autorima, mora se pronaći sustav koji generira Ninju. Preporučeni su CMake i gyp.
Pros:
- Muy rápido
Cons:
- Za mrijest Ninje potreban vam je drugi sustav
- Malo širenja
ninja
drugi
Možete koristiti bilo koji drugi sustav, poput vlastite bash ili python skripte. Postoje i generatori za druge strane jezike koji se mogu koristiti poput Gradle, Maven, gyp itd.
Make nije sustav 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 kažem to iz vlastitog iskustva, u BSD uvijek moram instalirati GNU make jer je BSD make vrlo jednostavan u usporedbi s GNU makeom.
Slažem se s vama da je Autotools prilično glomazan, radije koristim samo Makefile. Teško je ispraviti pogreške u make datotekama koje generiraju Autotools.
Pozdrav!
Hvala na komentaru!
Po mom mišljenju GNU make je uvijek bio tradicionalniji i vjerniji izvornom programu izrade, a BSD make uvijek je bio inovativniji, ali možda sam primijetio i druge stvari prilikom usporedbe.
Automatski alati doista su velika glavobolja. Kao suradnik operativnog sustava Haiku morao sam prenositi softver s 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 prilagodljiv i jednostavan na temelju Lua skripti. Pogledajte ako to ne znate.
Čestitke na članku, jednostavne i jezgrovite, izvrsna referenca.
'make check' koristi se za provjeru kompilacije nakon korištenja makea
Lijep pozdrav