Ö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.
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!
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.
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.
A "make check" a fordítás ellenőrzése a make használata után
Üdvözlet