Kompilacijski sustavi. Osim jednostavne konfiguracije, napravite i napravite instalaciju

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.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   abimaelmartell dijo

    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!

    1.    AdrianArroyoStreet dijo

      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.

  2.   Chuck daniels dijo

    Trenutno koristim Premake4, vrlo prilagodljiv i jednostavan na temelju Lua skripti. Pogledajte ako to ne znate.
    Čestitke na članku, jednostavne i jezgrovite, izvrsna referenca.

  3.   kosti dijo

    'make check' koristi se za provjeru kompilacije nakon korištenja makea
    Lijep pozdrav