Kompilering systemer. Ud over enkel konfiguration, lav, lav installation

Alt eller næsten alle (og hvis du ikke er heldig) har vi været nødt til at kompilere et program ud fra kildekoden. Faktisk er det i de fleste projekter nok at lave en ./configure && make && make installation for at installere programmet, men vi vil se de forskellige alternativer:

GNU Make

GNU Make er et kompilationssystem på lavt niveau, få ting er konfigureret, og der udføres ingen test:

Fordele:

  • Meget udbredt
  • Let at forstå
  • Fast

Ulemper:

  • Lille konfigurerbar
  • Vanskeligt at vedligeholde
  • Udfører ikke test

make

BSD-mærke

BSD Make er en anden version af Make, der i øjeblikket bruges af * BSD-operativsystemer. Det adskiller sig i GNU Make som den mest omfattende BSD Make i funktionaliteter, selvom det er mindre udbredt.

Fordele:

  • Fast
  • Let at forstå
  • Flere funktioner end GNU Make

Ulemper:

  • Ikke udbredt i Linux-verdenen
  • Udfører ikke test
  • Lille konfigurerbar
  • Vanskeligt at vedligeholde

make

autotools

Autotools er det officielle GNU-system og genererer et script kaldet configure, som vi skal kalde for at generere den tilsvarende Makefile fra GNU Make. Det bruges i vid udstrækning, men flere og flere mennesker (inklusive mig selv) synes, at det er for besværligt, vanskeligt, langsomt og ikke særlig kompatibelt.

Fordele:

  • Meget konfigurerbar
  • Meget udbredt

Ulemper:

  • Lille bærbarhed mellem ikke-UNIX-systemer
  • Udfør for mange tests (tjek ALT, og ALT er ALT)
  • Meget langsom ved konfiguration
  • Dårlig bagudkompatibilitet

./configure && make

CMake

(Mit foretrukne system) CMake er et system, der kommer til at kompensere for manglerne ved Autotools i mange aspekter, såsom dets forfærdelige bagudkompatibilitet og bærbarhed. Forbedrer også testsystemet, der er meget konfigurerbart til hvert projekts behov. Sandheden er, at flere og flere projekter bruger CMake som KDE, PortAudio, Ogre3D osv. Vi kan genkende denne type systemer takket være en CMakeLists.txt-fil, der genererer en Makefile eller et projekt til Eclipse eller CodeBlocks

Fordele:

  • Fast
  • Stor platformssupport
  • Du kan definere testene på en meget tilpasselig måde

Ulemper:

  • Svært at forstå i starten
  • Du skal arbejde med en abstraktion, der i starten kan være skræmmende
  • Lille spredning, selvom den lidt efter lidt vokser

cmake . && make

Q Lav

QMake er et system designet af Trolltech til at kompilere projekter lavet i Qt. På denne måde lægger qmake stor vægt på Qt og er normalt det format, der bruges af IDE'er som QtCreator. Det er ret populært i Qt-projekter, men det findes ikke uden for dette miljø:

Fordele:

  • Meget godt integreret med Qt
  • Fast
  • God multiplatform inden for Qt

Ulemper:

  • Ikke almindelig uden for Qt-apps

qmake . && make

SCons

SCons er et Python-baseret system til kompilering af C / C ++ - projekter. I modsætning til Autotools, CMake eller QMake; SCons bygger ikke en Makefile. SCons er meget modificerbart, men det er måske den langsomste i enkle operationer
Fordele:

  • Nem ændring
  • Tag de retfærdige prøver

Ulemper:

  • Lidt spredning
  • langsom

scons

Boost. Jam

Boost.Jam er en version af Perforce Jam, der bruges i de populære C ++ Boost-biblioteker, selv om kompileringssystemet kan bruges separat. I modsætning til GNU Make bruger Boost.Jam Jamfiles, som er en forbedret version af Makefiles. De er ret populære i BeOS / Zeta / Haiku-miljøet.

Fordele:

  • Fast
  • Den korteste at skrive

Ulemper:

  • Lidt spredning
  • Vanskeligheder ved at udføre tests

bjam

Ninja

Ninja er et system, der er udviklet af Google til at levere et ultrahurtigt byggesystem, der oprindeligt var designet til Chromium-projektet. Ninja er ikke designet til at være let at ændre, ifølge sine egne forfattere skal der findes et system, der genererer Ninja. De anbefalede er CMake og gyp.

Fordele:

  • Muy rápido

Ulemper:

  • Du har brug for et andet system til at gyde Ninja
  • Lidt spredning

ninja

andre

Du kan bruge ethvert andet system, såsom dit eget bash- eller python-script. Der er også generatorer til andre ikke-indfødte sprog, der kan bruges som Gradle, Maven, gyp osv.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

4 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort.

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   abimaelmartell sagde han

    Make er ikke et kompilationssystem, det er en generator af binære filer (eller mål) fra dets kildekode. Det kan også bruges som en opgaveløber.

    Jeg adskiller dig med, at BSD-mærket er bredere i funktionalitet, GNU-mærket er mere komplet, det har mere funktionalitet. Og jeg siger dette fra min egen erfaring, i BSD skal jeg altid installere GNU make, fordi BSD make er meget enkel sammenlignet med GNU make.

    Jeg er enig med dig i, at Autotools er ret besværligt, jeg foretrækker bare at bruge Makefile. Makefiler genereret af autotools er svære at fejle.

    Greetings!

    1.    AdrianArroyoStreet sagde han

      Tak for kommentar!
      Efter min mening har GNU-mærke altid været mere traditionelt og tro mod det oprindelige mærkeprogram, og BSD-mærke har altid været mere innovative, men det kan være, at jeg har bemærket andre ting, når jeg foretager sammenligningen.

      Autotools er virkelig en stor hovedpine. Som bidragyder til Haiku-operativsystemet har jeg været nødt til at portere software med autotools, og det er helvede. Der er ikke få tilfælde, hvor jeg endte med at oprette Makefile eller CMakeLists.txt, før jeg fik fikset dette rod.

  2.   Chuck daniels sagde han

    Jeg bruger i øjeblikket Premake4, meget konfigurerbar og enkel baseret på Lua-scripts. Se, hvis du ikke ved det.
    Tillykke med artiklen, enkel og kortfattet, fremragende reference.

  3.   knogler sagde han

    'make check' bruges til at kontrollere kompilering efter brug af make
    Vær hilset