Kompilacijski sistemi. Osim jednostavne konfiguracije, napravite i napravite instalaciju

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.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   abimaelmartell rekao je

    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!

    1.    AdrianArroyoStreet rekao je

      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.

  2.   Chuck Daniel rekao je

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

  3.   Kosti rekao je

    'make check' koristi se za provjeru kompilacije nakon upotrebe make
    Pozdrav