Összeállítási rendszerek. Az egyszerű konfiguráláson túl, make, make install

Összesen vagy szinte mindegyiknek (és ha nem szerencsés) össze kellett állítanunk egy programot a forráskódból. Valójában a legtöbb projektben elég egy ./configure && make && make telepítést végrehajtani a program telepítéséhez, de meglátjuk a különböző alternatívákat:

GNU gyártmány

A GNU Make egy alacsony szintű fordítórendszer, kevés dolog van konfigurálva, és nem végeznek teszteket:

Előnyök:

  • Nagyon elterjedt
  • Egyszerű megérteni
  • gyors

Hátrányok:

  • Kicsit konfigurálható
  • Nehéz fenntartani
  • Nem végez teszteket

make

BSD gyártmány

A BSD Make a Make másik verziója, amelyet jelenleg a * BSD operációs rendszerek használnak. A GNU Make-ban különbözik a legátfogóbb BSD Make funkciókban, bár kevésbé elterjedt.

Előnyök:

  • gyors
  • Egyszerű megérteni
  • Több szolgáltatás, mint a GNU Make

Hátrányok:

  • Nem elterjedt a Linux világában
  • Nem végez teszteket
  • Kicsit konfigurálható
  • Nehéz fenntartani

make

Autóeszközök

Az Autotools a hivatalos GNU rendszer, és létrehoz egy szkriptet, amelyet konfigurációnak hívnak, amelyet meg kell hívnunk, hogy a megfelelő Makefile-t a GNU Make-ból állítsuk elő. Széles körben használják, azonban egyre többen (köztük én is) úgy gondolják, hogy ez túl nehézkes, nehéz, lassú és nem túl kompatibilis.

Előnyök:

  • Nagyon konfigurálható
  • Nagyon elterjedt

Hátrányok:

  • Kevés hordozhatóság a nem UNIX rendszerek között
  • Tegyen túl sok tesztet (ellenőrizzen MINDENT, és MINDEN MINDEN MINDEN van)
  • Konfiguráláskor nagyon lassú
  • Gyenge visszafelé kompatibilitás

./configure && make

CMake

(A kedvenc rendszerem) A CMake egy olyan rendszer, amely sok szempontból pótolja az Autotools hiányosságait, például szörnyű visszafelé kompatibilitását és hordozhatóságát. Továbbá javítja az egyes projektek igényeinek megfelelően jól konfigurálható tesztrendszert. Az igazság az, hogy egyre több projekt használja a CMake alkalmazást, mint például a KDE, a PortAudio, az Ogre3D stb. Az ilyen típusú rendszereket felismerhetjük egy CMakeLists.txt fájlnak köszönhetően, amely Makefile-t vagy projektet hoz létre az Eclipse vagy a CodeBlocks számára.

Előnyök:

  • gyors
  • Nagyszerű platformokon átívelő támogatás
  • Nagyon testreszabható módon definiálhatja a teszteket

Hátrányok:

  • Először nehéz megérteni
  • Olyan absztrakcióval kell dolgozni, amely eleinte ijesztő lehet
  • Kicsit terjed, bár apránként növekszik

cmake . && make

Q Készíts

A QMake egy olyan rendszer, amelyet a Trolltech tervezett a Qt-ben készült projektek összeállításához. Ily módon a qmake nagy hangsúlyt fektet a Qt-re, és általában az IDE-k által használt formátum, például a QtCreator. Elég népszerű a Qt projektekben, de nem található meg ezen a környéken kívül:

Előnyök:

  • Nagyon jól integrálva a Qt-vel
  • gyors
  • Jó multiplatform a Qt-n belül

Hátrányok:

  • Nem gyakori a Qt alkalmazásokon kívül

qmake . && make

SCons

Az SCons egy Python-alapú rendszer a C / C ++ projektek összeállításához. Az Autotools-tól eltérően a CMake vagy a QMake; Az SCons nem készít Makefile-t. Az SCons nagyon módosítható, de az egyszerű műveleteknél talán a leglassabb
Előnyök:

  • Könnyű módosítás
  • Tegye meg a tisztességes teszteket

Hátrányok:

  • Kevés terjedés
  • lassú

scons

Boost Jam

A Boost.Jam a Perforce Jam egyik változata, amelyet a népszerű C ++ Boost könyvtárakban használnak, bár az összeállítási rendszer külön is használható. A GNU Make-től eltérően a Boost.Jam Jamfile-okat használ, amelyek a Makefiles továbbfejlesztett verziói. Elég népszerűek a BeOS / Zeta / Haiku környezetben.

Előnyök:

  • gyors
  • A legrövidebb írás

Hátrányok:

  • Kevés terjedés
  • Nehézségek a tesztek elvégzésében

bjam

Nindzsa

A Ninja egy olyan rendszer, amelyet a Google fejlesztett ki annak érdekében, hogy egy eredetileg a Chromium projektnek tervezett ultragyors összeállítási rendszert biztosítson. A Ninját nem úgy tervezték, hogy könnyen módosítható legyen, saját szerzői szerint meg kell találni a Ninját generáló rendszert. Az ajánlott CMake és gyp.

Előnyök:

  • Muy rápido

Hátrányok:

  • Szüksége van egy másik rendszerre a Ninja ívásához
  • Kevés terjedés

ninja

Egyéb

Bármely más rendszert használhat, például saját bash vagy python szkriptet. Vannak generátorok más nem anyanyelvű nyelvekhez is, például Gradle, Maven, gyp stb.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   abimaelmartell dijo

    A Make nem fordítási rendszer, hanem binárisok (vagy célok) generátora a forráskódjából. Feladatfutóként is használható.

    Abban különbözöm Öntől, hogy a BSD gyártmány funkcionalitása szélesebb, a GNU gyártmánya teljesebb, több funkcionalitással rendelkezik. És ezt saját tapasztalatom alapján mondom, a BSD-ben mindig telepítenem kell a GNU make-t, mert a BSD make nagyon egyszerű a GNU make-hez képest.

    Egyetértek veled abban, hogy az Autotools meglehetősen nehézkes, inkább csak a Makefile-t használom. Az Autotools által létrehozott fájlokat nehéz hibakeresni.

    Üdvözlet!

    1.    AdrianArroyoStreet dijo

      Köszönöm a megjegyzést!
      Véleményem szerint a GNU make mindig hagyományosabb volt és hű az eredeti make programhoz, a BSD make pedig mindig innovatívabb, de előfordulhat, hogy más dolgokat is észrevettem az összehasonlítás során.

      Az autós szerszámok valóban nagy fejfájást okoznak. A Haiku operációs rendszer közreműködőjeként át kellett adnom a szoftvert autotoolokkal, és ez a pokol. Nem kevés olyan eset van, amikor a Makefile vagy a CMakeLists.txt fájlt készítettem, mielőtt kijavítottam volna ezt a rendetlenséget.

  2.   Chuck daniels dijo

    Jelenleg a Premake4-et használom, nagyon konfigurálható és egyszerű a Lua szkriptek alapján. Vessen egy pillantást, ha nem tudja.
    Gratulálok a cikkhez, egyszerű és tömör, kiváló referencia.

  3.   csontok dijo

    A "make check" a fordítás ellenőrzése a make használata után
    Üdvözlet