Sisteme de compilare. Dincolo de simpla configurare, make, make install

Toate sau aproape toate (și dacă nu ești norocos) a trebuit să compilăm un program din codul sursă. De fapt, în majoritatea proiectelor este suficient să faceți o instalare ./configure && make && make pentru a instala programul, dar vom vedea diferitele alternative:

GNU Make

GNU Make este un sistem de compilare de nivel scăzut, sunt configurate câteva lucruri și nu se efectuează teste:

Pro-uri:

  • Foarte răspândit
  • Simplu de înțeles
  • Rapid

Contra:

  • Puțin configurabil
  • Greu de întreținut
  • Nu efectuează teste

make

BSD Make

BSD Make este o altă versiune a Make utilizată în prezent de sistemele de operare * BSD. Diferă de GNU Make, fiind cea mai cuprinzătoare funcționalitate BSD Make, deși este mai puțin răspândită.

Pro-uri:

  • Rapid
  • Simplu de înțeles
  • Mai multe caracteristici decât GNU Make

Contra:

  • Nu este răspândit în lumea Linux
  • Nu efectuează teste
  • Puțin configurabil
  • Greu de întreținut

make

Instrumente automate

Autotools este sistemul oficial GNU și generează un script numit configure pe care trebuie să-l apelăm pentru a genera Makefile corespunzător din GNU Make. Este răspândit pe scară largă, totuși, din ce în ce mai mulți oameni (inclusiv eu) cred că este prea greoi, dificil, lent și nu prea compatibil.

Pro-uri:

  • Foarte configurabil
  • Foarte răspândit

Contra:

  • Portabilitate redusă între sistemele non-UNIX
  • Efectuați prea multe teste (verificați TOTUL și TOTUL este TOT)
  • Foarte lent la setare
  • Compatibilitate slabă înapoi

./configure && make

CMake

(Sistemul meu preferat) CMake este un sistem care vine să suplinească deficiențele Autotools în multe aspecte, cum ar fi compatibilitatea și portabilitatea teribilă a acesteia. De asemenea, îmbunătățirea sistemului de testare care este extrem de configurabil pentru nevoile fiecărui proiect. Adevărul este că tot mai multe proiecte folosesc CMake, cum ar fi KDE, PortAudio, Ogre3D etc. Putem recunoaște acest tip de sisteme datorită unui fișier CMakeLists.txt care va genera un Makefile sau un proiect pentru Eclipse sau CodeBlocks

Pro-uri:

  • Rapid
  • Suport excelent între platforme
  • Puteți defini testele într-un mod foarte personalizabil

Contra:

  • Greu de înțeles la început
  • Trebuie să lucrați cu o abstractizare care poate fi înspăimântătoare la început
  • Puțin răspândit, deși încetul cu încetul crește

cmake . && make

QFaceți

QMake este un sistem conceput de Trolltech pentru a compila proiecte realizate în Qt. În acest fel, qmake pune mult accent pe Qt și este de obicei formatul folosit de IDE-uri precum QtCreator. Este destul de popular în proiectele Qt, dar nu se găsește în afara acestui mediu:

Pro-uri:

  • Foarte bine integrat cu Qt
  • Rapid
  • Multiplatformă bună în Qt

Contra:

  • Mai puțin frecvente în afara aplicațiilor Qt

qmake . && make

SCcons

SCons este un sistem bazat pe Python pentru compilarea proiectelor C / C ++. Spre deosebire de Autotools, CMake sau QMake; SCons nu construiește un Makefile. SCons este foarte modificabil, dar este poate cel mai lent în operații simple
Pro-uri:

  • Modificare ușoară
  • Faceți testele corecte

Contra:

  • Puțină răspândire
  • lent

scons

Boost Jam

Boost.Jam este o versiune a Perforce Jam care este utilizată în popularele biblioteci Boost C ++, deși sistemul de compilare poate fi utilizat separat. Spre deosebire de GNU Make, Boost.Jam folosește Jamfiles, care sunt o versiune îmbunătățită a Makefiles. Sunt destul de populare în mediul BeOS / Zeta / Haiku.

Pro-uri:

  • Rapid
  • Cel mai scurt de scris

Contra:

  • Puțină răspândire
  • Dificultate în efectuarea testelor

bjam

Ninja

Ninja este un sistem dezvoltat de Google pentru a oferi un sistem de construcție ultra-rapid conceput inițial pentru a fi cel al proiectului Chromium. Ninja nu este conceput pentru a fi ușor de modificat, potrivit propriilor autori, trebuie găsit un sistem care generează Ninja. Cele recomandate sunt CMake și gyp.

Pro-uri:

  • Muy rápido

Contra:

  • Ai nevoie de un alt sistem pentru a da naștere lui Ninja
  • Puțină răspândire

ninja

alții

Puteți utiliza orice alt sistem, cum ar fi propriul script bash sau python. Există, de asemenea, generatoare pentru alte limbi non-native care pot fi utilizate precum Gradle, Maven, gyp etc.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   abimaelmartell el a spus

    Make nu este un sistem de compilare, este un generator de binare (sau ținte) din codul său sursă. Poate fi folosit și ca alergător de sarcini.

    Diferesc cu dvs. că marca BSD este mai cuprinzătoare în ceea ce privește funcționalitatea, marca GNU este mai completă, are mai multe funcționalități. Și spun asta din propria experiență, în BSD trebuie să instalez întotdeauna GNU make pentru că BSD make este foarte simplu în comparație cu GNU make.

    Sunt de acord cu dvs. că Autotools este destul de greoaie, prefer să folosesc doar Makefile. Fișierele make generate de Autotools sunt dificil de depanat.

    Salutări!

    1.    AdrianArroyoStreet el a spus

      Multumesc pentru comentariu!
      În opinia mea, GNU make a fost întotdeauna mai tradițional și mai fidel programului original make, iar BSD make a fost întotdeauna mai inovator, dar poate că am observat și alte lucruri atunci când fac comparația.

      Instrumentele automate sunt într-adevăr o mare durere de cap. În calitate de colaborator la sistemul de operare Haiku, a trebuit să port software cu unelte automate și este iad. Există puține cazuri în care am ajuns să creez Makefile sau CMakeLists.txt înainte de a remedia această mizerie.

  2.   Chuck Daniel el a spus

    În prezent folosesc Premake4, foarte configurabil și simplu bazat pe scripturi Lua. Aruncă o privire dacă nu o știi.
    Felicitări pentru articol, simplu și concis, referință excelentă.

  3.   oseminte el a spus

    'make check' este folosit pentru a verifica compilația după utilizarea make
    Salutari