Kompilaj sistemoj. Krom simpla agordi, fari, fari instali

Ĉiuj aŭ preskaŭ ĉiuj (kaj se vi ne bonŝancas) ni devis kompili programon el la fontkodo. Fakte en la plej multaj projektoj sufiĉas fari ./configure && make && make install por instali la programon, sed ni vidos la malsamajn alternativojn:

GNU Make

GNU Make estas malalta nivela kompila sistemo, malmultaj aferoj estas agorditaj kaj neniuj testoj estas farataj:

avantaĝoj:

  • Tre disvastigita
  • Simpla komprenebla
  • Rapida

Trompoj:

  • Malmulte agordebla
  • Malfacila prizorgado
  • Ne plenumas testojn

make

BSD Faru

BSD Make estas alia versio de Make nuntempe uzata de * BSD operaciumoj. Ĝi diferencas en GNU Make estanta la plej ampleksa BSD Make en funkcioj kvankam ĝi estas malpli disvastigita.

avantaĝoj:

  • Rapida
  • Simpla komprenebla
  • Pli da funkcioj ol GNU Make

Trompoj:

  • Ne disvastigita en la Linukso-mondo
  • Ne plenumas testojn
  • Malmulte agordebla
  • Malfacila prizorgado

make

Aŭtomataj iloj

Autotools estas la oficiala GNU-sistemo kaj generas skripton nomatan configur, kiun ni devas voki por generi la respondan Makefile de GNU Make. Ĝi estas vaste uzata, tamen pli kaj pli multaj homoj (inkluzive min) opinias, ke ĝi estas tro maloportuna, malfacila, malrapida kaj ne tre kongrua.

avantaĝoj:

  • Tre agordebla
  • Tre disvastigita

Trompoj:

  • Malmulta porteblo inter Ne-UNIX-sistemoj
  • Faru tro multajn provojn (kontrolu ĈIU, kaj ĈIO estas ĈIO)
  • Tre malrapide dum agordo
  • Malbona malantaŭa kongruo

./configure && make

CMake

(Mia plej ŝatata sistemo) CMake estas sistemo, kiu kompensas la mankojn de Aŭtomataj Iloj en multaj aspektoj, kiel ekzemple sia terura malantaŭa kongruo kaj porteblo. Ankaŭ plibonigante la testan sistemon tre agordeblan por la bezonoj de ĉiu projekto. La vero estas, ke pli kaj pli multaj projektoj uzas CMake kiel KDE, PortAudio, Ogre3D, ktp. Ni povas rekoni ĉi tian sistemon danke al dosiero CMakeLists.txt, kiu generos Makefile aŭ projekton por Eklipso aŭ CodeBlocks.

avantaĝoj:

  • Rapida
  • Bonega multiplataforma subteno
  • Vi povas difini la testojn en tre agordebla maniero

Trompoj:

  • Malfacile komprenebla komence
  • Vi devas labori kun abstraktaĵo, kiu unue povas timigi
  • Iom disvastiĝas kvankam iom post iom ĝi kreskas

cmake . && make

QFari

QMake estas sistemo projektita de Trolltech por kompili projektojn faritajn en Qt. Tiel qmake multe emfazas Qt kaj estas kutime la formato uzata de IDEoj kiel QtCreator. Ĝi estas sufiĉe populara en Qt-projektoj sed ĝi ne troviĝas ekster ĉi tiu medio:

avantaĝoj:

  • Tre bone integrita kun Qt
  • Rapida
  • Bona plurplatforma platformo ene de Qt

Trompoj:

  • Malofta ekster Qt-programoj

qmake . && make

SCons

SCons estas Python-bazita sistemo por kompili projektojn C / C ++. Male al Autotools, CMake aŭ QMake; SCons ne konstruas Makefile. SCons estas tre modifebla sed ĝi eble estas la plej malrapida en simplaj operacioj
avantaĝoj:

  • Facila modifo
  • Faru la justajn testojn

Trompoj:

  • Malmulta disvastiĝo
  • Malrapida

scons

Boost Jam

Boost.Jam estas versio de Perforce Jam uzata en la popularaj C ++ Boost-bibliotekoj, kvankam la kompila sistemo povas esti uzata aparte. Male al GNU Make, Boost.Jam uzas Jamfiles, kiuj estas plibonigita versio de Makefiles. Ili estas sufiĉe popularaj en la medio BeOS / Zeta / Haiku.

avantaĝoj:

  • Rapida
  • La plej mallonga por skribi

Trompoj:

  • Malmulta disvastiĝo
  • Malfacileco plenumi testojn

bjam

ninja

Ninja estas sistemo disvolvita de Google por provizi ultra-rapidan konstruan sistemon origine desegnitan por esti tiu de la projekto Chromium. Ninja ne estas desegnita por esti facile modifebla, laŭ siaj propraj aŭtoroj oni devas trovi sistemon, kiu generas Ninja. La rekomendindaj estas CMake kaj gyp.

avantaĝoj:

  • Multe rapide

Trompoj:

  • Vi bezonas alian sistemon por krei Ninja
  • Malmulta disvastiĝo

ninja

aliaj

Vi povas uzi iun ajn alian sistemon kiel vian propran skripton bash aŭ python. Ekzistas ankaŭ generatoroj por aliaj nedenaskaj lingvoj uzeblaj kiel Gradle, Maven, gyp, ktp.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

4 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   abimaelmartell diris

    Make ne estas kompila sistemo, ĝi estas generilo de duumaĵoj (aŭ celoj) de sia fonta kodo. Ĝi ankaŭ povas esti uzata kiel taskokuranto.

    Mi diferencas kun vi, ke la BSD-fabrikado estas pli vasta en funkcio, la GNU-fabrikado estas pli kompleta, ĝi havas pli da funkcieco. Kaj mi diras tion laŭ mia propra sperto, en BSD mi ĉiam devas instali GNU make ĉar BSD make estas tre simpla kompare kun GNU make.

    Mi konsentas kun vi, ke Autotools estas sufiĉe maloportuna, mi preferas nur uzi la Makefile. Makefiles generitaj de Autotools malfacilas elpurigi.

    Dankon!

    1.    AdrianArroyoStreet diris

      Dankon pro komento!
      Miaopinie GNU make ĉiam estis pli tradicia kaj fidela al la originala make-programo kaj BSD make ĉiam estis pli noviga sed povas esti, ke mi rimarkis aliajn aferojn kiam mi faris la komparon.

      Aŭtomataj iloj estas vere granda kapdoloro. Kiel kontribuanto al la operaciumo Haiku, mi devis enporti programojn kun aŭtomataj iloj kaj ĝi estas diable. Ne malmultaj kazoj mi finis krei la Makefile aŭ la CMakeLists.txt antaŭ ol ripari ĉi tiun fuŝaĵon.

  2.   Chuck daniels diris

    Mi nuntempe uzas Premake4, tre agordeblan kaj simplan bazitan sur Lua-skriptoj. Rigardu, se vi ne scias ĝin.
    Gratulon pro la artikolo, simpla kaj konciza, bonega referenco.

  3.   Ostoj diris

    'make check' estas uzata por kontroli la kompilon post uzado de make
    Salutojn