Kompilationssystem. Utöver enkel konfiguration, gör, gör installation

Alla eller nästan alla (och om du inte har tur) har vi varit tvungna att sammanställa ett program från källkoden. I de flesta projekt är det faktiskt tillräckligt att göra en ./configure && make && installera för att installera programmet, men vi kommer att se de olika alternativen:

GNU -märke

GNU Make är ett kompileringssystem på låg nivå, få saker är konfigurerade och inga tester utförs:

Alla tillgångar på ett och samma ställe

  • Mycket utbredd
  • Enkelt att förstå
  • Snabb

Nackdelar:

  • Lite konfigurerbar
  • Svårt att underhålla
  • Utför inte tester

make

BSD-märke

BSD Make är en annan version av Make som för närvarande används av * BSD-operativsystem. Det skiljer sig från GNU Make, eftersom det är den mest omfattande BSD Make i funktionalitet, även om den är mindre utbredd.

Alla tillgångar på ett och samma ställe

  • Snabb
  • Enkelt att förstå
  • Fler funktioner än GNU Make

Nackdelar:

  • Inte utbredd i Linux-världen
  • Utför inte tester
  • Lite konfigurerbar
  • Svårt att underhålla

make

autotools

Autotools är det officiella GNU-systemet och genererar ett skript som heter configure som vi måste ringa för att generera motsvarande Makefile från GNU Make. Det utvidgas allmänt, men fler och fler människor (inklusive mig själv) tycker att det är för besvärligt, svårt, långsamt och inte särskilt kompatibelt.

Alla tillgångar på ett och samma ställe

  • Mycket konfigurerbar
  • Mycket utbredd

Nackdelar:

  • Låg portabilitet mellan icke-UNIX-system
  • Utför för många tester (kontrollera ALLT, och ALLT är ALLT)
  • Mycket långsam vid inställning
  • Dålig bakåtkompatibilitet

./configure && make

CMake

(Mitt favoritsystem) CMake är ett system som kommer att kompensera för bristerna i Autotools i många aspekter, till exempel dess hemska bakåtkompatibilitet och bärbarhet. Förbättrar också testsystemet som är mycket konfigurerbara för varje projekts behov. Sanningen är att fler och fler projekt använder CMake som KDE, PortAudio, Ogre3D, etc. Vi kan känna igen denna typ av system tack vare en CMakeLists.txt-fil som genererar en Makefile eller ett projekt för Eclipse eller CodeBlocks

Alla tillgångar på ett och samma ställe

  • Snabb
  • Bra plattformsstöd
  • Du kan definiera testerna på ett mycket anpassningsbart sätt

Nackdelar:

  • Svårt att förstå först
  • Du måste arbeta med en abstraktion som kan vara läskig först
  • Lite spridning även om den växer lite efter lite

cmake . && make

Q Gör

QMake är ett system designat av Trolltech för att sammanställa projekt gjorda i Qt. På detta sätt lägger qmake stor vikt vid Qt och är vanligtvis det format som används av IDE: er som QtCreator. Det är ganska populärt i Qt-projekt men det finns inte utanför denna miljö:

Alla tillgångar på ett och samma ställe

  • Mycket väl integrerad med Qt
  • Snabb
  • Bra multiplatform inom Qt

Nackdelar:

  • Mindre vanliga utanför Qt-appar

qmake . && make

scons

SCons är ett Python-baserat system för att sammanställa C / C ++ - projekt. Till skillnad från Autotools, CMake eller QMake; SCons bygger inte en Makefile. SCons är mycket modifierbart men det är kanske det långsammaste i enkla operationer
Alla tillgångar på ett och samma ställe

  • Enkel modifiering
  • Ta rättvisa tester

Nackdelar:

  • Lite spridning
  • långsam

scons

Boost. Jam

Boost.Jam är en version av Perforce Jam som används i de populära C ++ Boost-biblioteken, även om kompileringssystemet kan användas separat. Till skillnad från GNU Make använder Boost.Jam Jamfiles, som är en förbättrad version av Makefiles. De är ganska populära i BeOS / Zeta / Haiku-miljön.

Alla tillgångar på ett och samma ställe

  • Snabb
  • Det kortaste att skriva

Nackdelar:

  • Lite spridning
  • Svårighet att utföra tester

bjam

Ninja

Ninja är ett system som utvecklats av Google för att tillhandahålla ett ultrasnabbt byggsystem som ursprungligen var utformat för att vara det för Chromium-projektet. Ninja är inte utformad för att vara lätt att modifiera, enligt sina egna författare måste ett system som genererar Ninja hittas. Rekommenderas är CMake och gyp.

Alla tillgångar på ett och samma ställe

  • Väldigt snabbt

Nackdelar:

  • Du behöver ett annat system för att leka Ninja
  • Lite spridning

ninja

andra

Du kan använda vilket annat system som helst som ditt eget bash- eller python-skript. Det finns också generatorer för andra icke-modersmål som kan användas som Gradle, Maven, gyp, etc.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   abimaelmartell sade

    Make är inte ett kompileringssystem, det är en generator av binärer (eller mål) från dess källkod. Den kan också användas som en aktivitetslöpare.

    Jag skiljer dig med att BSD-märket är bredare i funktionalitet, GNU-märket är mer komplett, det har mer funktionalitet. Och jag säger detta från min egen erfarenhet, i BSD måste jag alltid installera GNU-fabrikat eftersom BSD-fabrikat är väldigt enkelt jämfört med GNU-fabrikat.

    Jag håller med dig om att Autotools är ganska besvärligt, jag föredrar att bara använda Makefile. Makefiler genererade av Autotools är svåra att felsöka.

    Hälsningar!

    1.    AdrianArroyoStreet sade

      Tack för kommentar!
      Enligt min åsikt har GNU-märket alltid varit mer traditionellt och troget mot det ursprungliga märket och BSD-märket har alltid varit mer innovativt men det kan vara så att jag har lagt märke till andra saker när jag gör jämförelsen.

      Autotools är verkligen en stor huvudvärk. Som en bidragsgivare till Haiku-operativsystemet har jag varit tvungen att porta programvara med autotools och det är fan. Det är inte få fall som jag slutade med att skapa Makefile eller CMakeLists.txt innan jag fixade den där röran.

  2.   Chuck daniels sade

    Jag använder för närvarande Premake4, mycket konfigurerbar och enkel baserat på Lua-skript. Ta en titt om du inte vet det.
    Grattis till artikeln, enkel och kortfattad, utmärkt referens.

  3.   ben sade

    'make check' används för att kontrollera sammanställningen efter att ha använt make
    Hälsningar