Samestellingstelsels. Buiten eenvoudige konfigurasie, maak, maak installeer

Ons moes byna almal (en as u nie gelukkig is nie) 'n program saamstel uit die bronkode. In die meeste projekte is dit genoeg om 'n ./configure && make && installasie te doen om die program te installeer, maar ons gaan die verskillende alternatiewe sien:

GNU Maak

GNU Make is 'n lae-vlak samestellingstelsel, min dinge is ingestel en geen toetse word uitgevoer nie:

Pros:

  • Baie wydverspreid
  • Eenvoudig om te verstaan
  • Fast

nadele:

  • Min konfigureerbaar
  • Moeilik om te onderhou
  • Voer nie toetse uit nie

make

BSD Merk

BSD Make is 'n ander weergawe van Make wat tans gebruik word deur * BSD-bedryfstelsels. Dit verskil van GNU Make, aangesien dit die omvattendste BSD Make-funksionaliteit is, hoewel dit minder wydverspreid is.

Pros:

  • Fast
  • Eenvoudig om te verstaan
  • Meer funksies as GNU Make

nadele:

  • Nie wydverspreid in die Linux-wêreld nie
  • Voer nie toetse uit nie
  • Min konfigureerbaar
  • Moeilik om te onderhou

make

Outotools

Autotools is die amptelike GNU-stelsel en genereer 'n script genaamd configure wat ons moet oproep om die ooreenstemmende GNU Make Makefile te genereer. Dit word wyd gebruik, maar meer en meer mense (insluitend myself) dink dat dit te omslagtig, moeilik, stadig en nie baie versoenbaar is nie.

Pros:

  • Baie instelbaar
  • Baie wydverspreid

nadele:

  • Min draagbaarheid tussen nie-UNIX-stelsels
  • Voer te veel toetse uit (kyk ALLES, en ALLES is ALLES)
  • Baie stadig wanneer u instel
  • Swak agteruitversoenbaarheid

./configure && make

CMaak

(My gunstelingstelsel) CMake is 'n stelsel wat die tekortkominge van Autotools in baie opsigte kom aanvul, soos die verskriklike agteruitversoenbaarheid en draagbaarheid daarvan. Verbeter ook die toetsstelsel wat baie instelbaar is vir die behoeftes van elke projek. Die waarheid is dat meer en meer projekte CMake gebruik, soos KDE, PortAudio, Ogre3D, ens. Ons kan hierdie tipe stelsel herken deur 'n CMakeLists.txt-lêer wat 'n Makefile of 'n projek vir Eclipse of CodeBlocks sal genereer.

Pros:

  • Fast
  • Groot platform-ondersteuning
  • U kan die toetse op 'n baie aanpasbare manier definieer

nadele:

  • Aanvanklik moeilik om te verstaan
  • U moet eers met 'n abstraksie werk wat eng kan wees
  • Min versprei hoewel dit bietjie vir bietjie groei

cmake . && make

QMaak

QMake is 'n stelsel wat deur Trolltech ontwerp is om projekte wat in Qt gemaak is, saam te stel. Op hierdie manier plaas qmake baie klem op Qt en is dit gewoonlik die formaat wat deur IDE's soos QtCreator gebruik word. Dit is baie gewild in Qt-projekte, maar dit word nie buite hierdie omgewing aangetref nie:

Pros:

  • Baie goed geïntegreer met Qt
  • Fast
  • Goeie multiplatform binne Qt

nadele:

  • Soms buite Qt-programme

qmake . && make

SKons

SCons is 'n Python-gebaseerde stelsel vir die saamstel van C / C ++ projekte. Anders as Autotools, CMake of QMake; SCons bou nie 'n Makefile nie. SCons is baie veranderbaar, maar dit is miskien die stadigste in eenvoudige bedrywighede
Pros:

  • Maklike aanpassing
  • Neem die billike toetse

nadele:

  • Min verspreiding
  • Lento

scons

Boost Jam

Boost.Jam is 'n weergawe van Perforce Jam wat in die gewilde C ++ Boost-biblioteke gebruik word, hoewel die samestellingstelsel afsonderlik gebruik kan word. Anders as GNU Make, gebruik Boost.Jam Jamfiles, wat 'n verbeterde weergawe van Makefiles is. Hulle is baie gewild in die BeOS / Zeta / Haiku-omgewing.

Pros:

  • Fast
  • Die kortste om te skryf

nadele:

  • Min verspreiding
  • Probleme om toetse uit te voer

bjam

ninja

Ninja is 'n stelsel wat deur Google ontwikkel is om 'n ultra-vinnige stelsel te skep wat oorspronklik ontwerp is om die van die Chromium-projek te wees. Ninja is nie ontwerp om maklik te verander nie, volgens sy eie outeurs moet 'n stelsel gevind word wat Ninja genereer. Aanbevole is CMake en gyp.

Pros:

  • Muy rápido

nadele:

  • U het 'n ander stelsel nodig om Ninja te kuit
  • Min verspreiding

ninja

ander

U kan enige ander stelsel gebruik, soos u eie bash- of python-skrif. Daar is ook kragopwekkers vir ander nie-moedertale wat gebruik kan word soos Gradle, Maven, gyp, ens.


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

4 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   abimaelmartell dijo

    Make is nie 'n samestellingstelsel nie, dit is 'n kragopwekker van binaries (of teikens) uit die bronkode. Dit kan ook as 'n taakloper gebruik word.

    Ek verskil met u dat die BSD-merk 'n wyer funksionaliteit het, dat die GNU-fabrikaat vollediger is, dat dit meer funksionaliteit het. En ek sê dit uit my eie ervaring: in BSD moet ek altyd GNU make installeer omdat BSD fabriek baie eenvoudig is in vergelyking met GNU fabriek.

    Ek stem saam met u dat Autotools nogal omslagtig is. Ek gebruik verkieslik net die Makefile. Makefiles wat deur Autotools gegenereer word, is moeilik om te ontfout.

    Groete!

    1.    AdrianArroyoStreet dijo

      Dankie vir kommentaar!
      Volgens my was GNU-fabriek nog altyd meer tradisioneel en getrou aan die oorspronklike fabrieksprogram, en BSD-fabrikaat was nog altyd innoverender, maar ek het miskien ander dinge raakgesien toe ek die vergelyking getref het.

      Autotools is regtig 'n groot kopseer. As 'n bydraer tot die Haiku-bedryfstelsel moes ek sagteware met outoto's wegdra, en dit is hel. Daar is nie 'n paar gevalle wat ek uiteindelik die Makefile of CMakeLists.txt gemaak het voordat ek die gemors reggemaak het nie.

  2.   Chuck daniels dijo

    Ek gebruik tans Premake4, baie instelbaar en eenvoudig gebaseer op Lua-skrifte. Kyk as jy dit nie weet nie.
    Baie geluk met die artikel, eenvoudig en bondig, uitstekende verwysing.

  3.   bene dijo

    'maak tjek' word gebruik om die samestelling na gebruik van merk te kontroleer
    Groete