Kompiliavimo sistemos. Be paprasto konfigūravimo, darykite, įdiekite

Visi arba beveik visi (ir jei jums nesiseka), mes turėjome sudaryti programą iš šaltinio kodo. Tiesą sakant, daugumoje projektų pakanka atlikti ./configure && make && make install, kad įdiegtumėte programą, bet mes pamatysime įvairias alternatyvas:

GNU gamintojas

„GNU Make“ yra žemo lygio kompiliavimo sistema, sukonfigūruota keletas dalykų ir neatliekami jokie bandymai:

Argumentai "už":

  • Labai paplitusi
  • Paprasta suprasti
  • Greitai

Suvart:

  • Mažai konfigūruojama
  • Sunku prižiūrėti
  • Neatlieka testų

make

BSD gamintojas

„BSD Make“ yra dar viena „Make“ versija, kurią šiuo metu naudoja * BSD operacinės sistemos. GNU „Make“ yra išsamiausias „BSD Make“ funkcionalumas, nors jis yra mažiau paplitęs.

Argumentai "už":

  • Greitai
  • Paprasta suprasti
  • Daugiau funkcijų nei „GNU Make“

Suvart:

  • Nėra plačiai paplitęs „Linux“ pasaulyje
  • Neatlieka testų
  • Mažai konfigūruojama
  • Sunku prižiūrėti

make

Automatinės priemonės

„Autotools“ yra oficiali GNU sistema ir sukuria scenarijų, pavadintą configure, kurį turime iškviesti, kad sugeneruotume atitinkamą „Makefile“ iš „GNU Make“. Jis plačiai naudojamas, tačiau vis daugiau žmonių (įskaitant ir mane) mano, kad jis yra per daug sudėtingas, sunkus, lėtas ir nelabai suderinamas.

Argumentai "už":

  • Labai konfigūruojamas
  • Labai paplitusi

Suvart:

  • Mažas perkeliamumas tarp ne UNIX sistemų
  • Atlikite per daug testų (patikrinkite VISKĄ, o VISKAS VISKAS)
  • Konfigūruojant labai lėtai
  • Blogas atgalinis suderinamumas

./configure && make

CMake

(Mano mėgstamiausia sistema) „CMake“ yra sistema, kuri kompensuoja „Autotools“ trūkumus daugeliu aspektų, pavyzdžiui, dėl baisaus atgalinio suderinamumo ir perkeliamumo. Taip pat tobulinama testavimo sistema, kurią galima konfigūruoti atsižvelgiant į kiekvieno projekto poreikius. Tiesa ta, kad vis daugiau projektų naudoja „CMake“, pvz., KDE, „PortAudio“, „Ogre3D“ ir kt. Šio tipo sistemas galime atpažinti dėka CMakeLists.txt failo, kuris sugeneruos „Makefile“ arba „Eclipse“ ar „CodeBlocks“ projektą.

Argumentai "už":

  • Greitai
  • Puiki parama tarp platformų
  • Testus galite apibrėžti labai tinkamu būdu

Suvart:

  • Iš pradžių sunku suprasti
  • Turite dirbti su abstrakcija, kuri iš pradžių gali būti bauginanti
  • Mažai plinta, nors po truputį auga

cmake . && make

„QMake“

„QMake“ yra „Trolltech“ sukurta sistema, skirta kaupti Qt sukurtus projektus. Tokiu būdu qmake daug dėmesio skiria Qt ir paprastai yra formatas, kurį naudoja IDE, pvz., QtCreator. Jis yra gana populiarus Qt projektuose, tačiau jo nėra už šios aplinkos ribų:

Argumentai "už":

  • Labai gerai integruotas su Qt
  • Greitai
  • Geras daugiaplatformis Qt

Suvart:

  • Nedažnas už „Qt“ programų ribų

qmake . && make

Skoniai

„SCons“ yra „Python“ pagrindu sukurta sistema, skirta sudaryti C / C ++ projektus. Skirtingai nuo „Autotools“, „CMake“ ar „QMake“; SCons nekuria „Makefile“. SCON yra labai modifikuojamas, tačiau tai greičiausiai yra lėčiausias paprastų operacijų metu
Argumentai "už":

  • Lengva modifikuoti
  • Laikykitės sąžiningų testų

Suvart:

  • Mažai išplito
  • Lėtas

scons

Padidinkite

„Boost.Jam“ yra „Perforce Jam“ versija, naudojama populiariose C ++ Boost bibliotekose, nors kompiliavimo sistemą galima naudoti atskirai. Skirtingai nuo „GNU Make“, „Boost.Jam“ naudoja „Jamfiles“, kurie yra patobulinta „Makefiles“ versija. Jie yra gana populiarūs „BeOS“ / „Zeta“ / „Haiku“ aplinkoje.

Argumentai "už":

  • Greitai
  • Trumpiausiai parašyti

Suvart:

  • Mažai išplito
  • Sunkumai atliekant testus

bjam

Ninja

„Ninja“ yra „Google“ sukurta sistema, užtikrinanti ypač greitą „Chromium“ projekto sukūrimo sistemą. „Ninja“ nėra sukurta taip, kad ją būtų lengva modifikuoti, anot jos pačios autorių, reikėtų rasti sistemą, kuri generuotų „Ninja“. Rekomenduojami yra CMake ir gyp.

Argumentai "už":

  • Muy rápido

Suvart:

  • Norint išgauti „Ninja“, reikia kitos sistemos
  • Mažai išplito

ninja

kiti

Galite naudoti bet kurią kitą sistemą, pvz., Savo „bash“ arba „python“ scenarijų. Taip pat yra generatoriai kitoms ne gimtosioms kalboms, kurie gali būti naudojami, pavyzdžiui, „Gradle“, „Maven“, „gyp“ ir kt.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   abimaelmartell sakė

    „Make“ nėra kompiliavimo sistema, ji yra dvejetainių failų (arba taikinių) generatorius iš savo šaltinio kodo. Jis taip pat gali būti naudojamas kaip užduočių bėgikas.

    Aš su jumis skiriasi tuo, kad BSD markė yra platesnio funkcionalumo, GNU markė yra išsamesnė, ji turi daugiau funkcionalumo. Tai sakau iš savo patirties, BSD visada turiu įdiegti GNU make, nes BSD make yra labai paprasta, palyginti su GNU make.

    Sutinku su jumis, kad „Autotools“ yra gana sudėtinga, aš norėčiau tiesiog naudoti „Makefile“. „Autotools“ sugeneruotus failų failus sunku derinti.

    Sveiki atvykę!

    1.    AdrianArroyo gatvė sakė

      Ačiū už komentarą!
      Mano nuomone, „GNU make“ visada buvo tradiciškesnis ir ištikimesnis originaliai gamintojo programai, o „BSD make“ visada buvo naujoviškesnis, tačiau gali būti, kad palygindamas pastebėjau kitus dalykus.

      Automatinės priemonės tikrai yra didelis galvos skausmas. Kaip „Haiku“ operacinės sistemos bendradarbis, man teko perkelti programinę įrangą su automatiniais įrankiais ir tai yra pragaras. Nėra nedaug atvejų, kai prieš taisydama šią netvarką galiausiai sukūriau „Makefile“ arba „CMakeLists.txt“.

  2.   Chucko danieliai sakė

    Šiuo metu naudoju „Premake4“, labai konfigūruojamą ir paprastą pagal „Lua“ scenarijus. Pažvelkite, jei to nežinote.
    Sveikiname straipsnį, paprasta ir glausta, puiki nuoroda.

  3.   Kaulai sakė

    'make check' naudojamas kompiliavimui patikrinti panaudojus make
    Sveikinimai