Kompilacijski sistemi. Poleg preproste konfiguracije naredite in naredite namestitev

Vsi ali skoraj vsi (in če nimate sreče) smo morali sestaviti program iz izvorne kode. Pravzaprav je v večini projektov dovolj, da namestite program ./configure && make && make install, vendar bomo videli različne možnosti:

Ustvari GNU

GNU Make je sistem prevajanja na nizki ravni, konfigurirano je nekaj stvari in testi se ne izvajajo:

Prednosti:

  • Zelo razširjena
  • Preprosto za razumevanje
  • Hitro

Proti:

  • Malo nastavljivo
  • Težko vzdrževati
  • Ne izvaja testov

make

BSD Znamka

BSD Make je druga različica znamke, ki jo trenutno uporabljajo * BSD operacijski sistemi. Razlikuje se od GNU Make, saj je najobsežnejši BSD Make po funkcionalnosti, čeprav je manj razširjen.

Prednosti:

  • Hitro
  • Preprosto za razumevanje
  • Več funkcij kot GNU Make

Proti:

  • Ni razširjen v svetu Linuxa
  • Ne izvaja testov
  • Malo nastavljivo
  • Težko vzdrževati

make

Samodejna orodja

Autotools je uradni sistem GNU in ustvari skript, imenovan configure, ki ga moramo poklicati, da ustvarimo ustrezen GNU Make Makefile. Na splošno je razširjen, vendar vse več ljudi (vključno z mano) meni, da je preveč okoren, težaven, počasen in ne preveč združljiv.

Prednosti:

  • Zelo nastavljiv
  • Zelo razširjena

Proti:

  • Majhna prenosljivost med sistemi, ki niso UNIX
  • Izvedite preveč testov (preverite VSE in VSE JE VSE)
  • Zelo počasno pri konfiguriranju
  • Slaba združljivost za nazaj

./configure && make

CMake

(Moj najljubši sistem) CMake je sistem, ki v mnogih pogledih nadoknadi pomanjkljivosti Autotools, na primer njegovo strašno združljivost in prenosljivost. Izboljša tudi testni sistem, ki je zelo prilagodljiv za potrebe vsakega projekta. Resnica je, da vedno več projektov uporablja CMake, kot so KDE, PortAudio, Ogre3D itd. Tovrstne sisteme lahko prepoznamo po datoteki CMakeLists.txt, ki bo ustvarila datoteko Makefile ali projekt za Eclipse ali CodeBlocks

Prednosti:

  • Hitro
  • Odlična podpora za več platform
  • Preizkuse lahko definirate na zelo prilagodljiv način

Proti:

  • Sprva težko razumljiv
  • Delati morate z abstrakcijo, ki je sprva lahko strašljiva
  • Malo se širi, čeprav malo po malo raste

cmake . && make

Q Izdelava

QMake je sistem, ki ga je Trolltech oblikoval za zbiranje projektov, izdelanih v Qt. Na ta način qmake veliko poudarja Qt in je običajno oblika, ki jo uporabljajo IDE-ji, kot je QtCreator. Je zelo priljubljen v projektih Qt, vendar ga ni mogoče najti zunaj tega okolja:

Prednosti:

  • Zelo dobro integriran s Qt
  • Hitro
  • Dobra multiplatforma znotraj Qt

Proti:

  • Občasni zunaj aplikacij Qt

qmake . && make

SCons

SCons je sistem za sestavljanje projektov C / C ++, ki temelji na Pythonu. Za razliko od Autotools, CMake ali QMake; SCons ne gradi datoteke datotek Make. SCons je zelo prilagodljiv, vendar je morda najpočasnejši pri preprostih operacijah
Prednosti:

  • Enostavna sprememba
  • Opravite poštene teste

Proti:

  • Malo širjenja
  • Počasi

scons

Boost Jam

Boost.Jam je različica Perforce Jam, ki se uporablja v priljubljenih knjižnicah C ++ Boost, čeprav je sistem prevajanja mogoče uporabiti ločeno. Za razliko od GNU Make, Boost.Jam uporablja datoteke Jamfiles, ki so izboljšana različica datotek Makefiles. V okolju BeOS / Zeta / Haiku so zelo priljubljeni.

Prednosti:

  • Hitro
  • Najkrajši za pisanje

Proti:

  • Malo širjenja
  • Težave pri izvajanju testov

bjam

ninja

Ninja je sistem, ki ga je razvil Google za zagotavljanje ultrahitrega sistema za izdelavo, ki je bil prvotno zasnovan kot sistem Chromium. Ninja ni zasnovana tako, da bi jo bilo enostavno spreminjati, po mnenju njenih avtorjev bi bilo treba najti sistem, ki generira Ninjo. Priporočljivi so CMake in gyp.

Prednosti:

  • Muy rápido

Proti:

  • Za drstenje Ninje potrebujete drug sistem
  • Malo širjenja

ninja

drugi

Uporabite lahko kateri koli drug sistem, na primer lasten skript bash ali python. Obstajajo tudi generatorji za druge tuje jezike, ki jih je mogoče uporabiti, kot so Gradle, Maven, gyp itd.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   abimaelmartell je dejal

    Make ni sistem kompilacije, je generator binarnih datotek (ali ciljev) iz izvorne kode. Lahko se uporablja tudi kot izvajalec opravil.

    Z vami se razlikujem, da je znamka BSD po funkcionalnosti širša, znamka GNU je bolj popolna in ima več funkcionalnosti. In to rečem iz lastnih izkušenj, v BSD moram vedno namestiti GNU make, ker je BSD make zelo preprost v primerjavi z GNU make.

    Strinjam se z vami, da je Autotools precej okoren, raje uporabljam samo datoteko Makefile. Makefile, ki jih ustvari Autotools, je težko odpraviti.

    Lep pozdrav!

    1.    AdrianArroyoStreet je dejal

      Hvala za komentar!
      Po mojem mnenju je bila znamka GNU vedno bolj tradicionalna in zvesta prvotnemu programu make, znamka BSD pa je bila vedno bolj inovativna, vendar sem morda med primerjavo opazil še druge stvari.

      Avto orodja so res velik glavobol. Kot sodelavec operacijskega sistema Haiku sem moral priklopiti programsko opremo z samodejnimi orodji in to je hudič. Ni malo primerov, da sem na koncu ustvaril datoteko Makefile ali CMakeLists.txt, preden sem popravil to nered.

  2.   Chuck daniels je dejal

    Trenutno uporabljam Premake4, zelo prilagodljiv in preprost na podlagi skriptov Lua. Poglejte, če tega ne veste.
    Čestitke za članek, preprosto in jedrnato, odlična referenca.

  3.   Kosti je dejal

    'make check' se uporablja za preverjanje prevajanja po uporabi make
    Pozdravi