Ons moes byna almal (en as u nie gelukkig is nie) 'n program saamstel uit die bronkode. In die meeste projekte is dit genoeg om 'n ./configure && make && installasie te doen om die program te installeer, maar ons gaan die verskillende alternatiewe sien:
GNU Maak
GNU Make is 'n lae-vlak samestellingstelsel, min dinge is ingestel en geen toetse word uitgevoer nie:
Pros:
- Baie wydverspreid
- Eenvoudig om te verstaan
- Fast
nadele:
- Min konfigureerbaar
- Moeilik om te onderhou
- Voer nie toetse uit nie
make
BSD Merk
BSD Make is 'n ander weergawe van Make wat tans gebruik word deur * BSD-bedryfstelsels. Dit verskil van GNU Make, aangesien dit die omvattendste BSD Make-funksionaliteit is, hoewel dit minder wydverspreid is.
Pros:
- Fast
- Eenvoudig om te verstaan
- Meer funksies as GNU Make
nadele:
- Nie wydverspreid in die Linux-wêreld nie
- Voer nie toetse uit nie
- Min konfigureerbaar
- Moeilik om te onderhou
make
Outotools
Autotools is die amptelike GNU-stelsel en genereer 'n script genaamd configure wat ons moet oproep om die ooreenstemmende GNU Make Makefile te genereer. Dit word wyd gebruik, maar meer en meer mense (insluitend myself) dink dat dit te omslagtig, moeilik, stadig en nie baie versoenbaar is nie.
Pros:
- Baie instelbaar
- Baie wydverspreid
nadele:
- Min draagbaarheid tussen nie-UNIX-stelsels
- Voer te veel toetse uit (kyk ALLES, en ALLES is ALLES)
- Baie stadig wanneer u instel
- Swak agteruitversoenbaarheid
./configure && make
CMaak
(My gunstelingstelsel) CMake is 'n stelsel wat die tekortkominge van Autotools in baie opsigte kom aanvul, soos die verskriklike agteruitversoenbaarheid en draagbaarheid daarvan. Verbeter ook die toetsstelsel wat baie instelbaar is vir die behoeftes van elke projek. Die waarheid is dat meer en meer projekte CMake gebruik, soos KDE, PortAudio, Ogre3D, ens. Ons kan hierdie tipe stelsel herken deur 'n CMakeLists.txt-lêer wat 'n Makefile of 'n projek vir Eclipse of CodeBlocks sal genereer.
Pros:
- Fast
- Groot platform-ondersteuning
- U kan die toetse op 'n baie aanpasbare manier definieer
nadele:
- Aanvanklik moeilik om te verstaan
- U moet eers met 'n abstraksie werk wat eng kan wees
- Min versprei hoewel dit bietjie vir bietjie groei
cmake . && make
QMaak
QMake is 'n stelsel wat deur Trolltech ontwerp is om projekte wat in Qt gemaak is, saam te stel. Op hierdie manier plaas qmake baie klem op Qt en is dit gewoonlik die formaat wat deur IDE's soos QtCreator gebruik word. Dit is baie gewild in Qt-projekte, maar dit word nie buite hierdie omgewing aangetref nie:
Pros:
- Baie goed geïntegreer met Qt
- Fast
- Goeie multiplatform binne Qt
nadele:
- Soms buite Qt-programme
qmake . && make
SKons
SCons is 'n Python-gebaseerde stelsel vir die saamstel van C / C ++ projekte. Anders as Autotools, CMake of QMake; SCons bou nie 'n Makefile nie. SCons is baie veranderbaar, maar dit is miskien die stadigste in eenvoudige bedrywighede
Pros:
- Maklike aanpassing
- Neem die billike toetse
nadele:
- Min verspreiding
- Lento
scons
Boost Jam
Boost.Jam is 'n weergawe van Perforce Jam wat in die gewilde C ++ Boost-biblioteke gebruik word, hoewel die samestellingstelsel afsonderlik gebruik kan word. Anders as GNU Make, gebruik Boost.Jam Jamfiles, wat 'n verbeterde weergawe van Makefiles is. Hulle is baie gewild in die BeOS / Zeta / Haiku-omgewing.
Pros:
- Fast
- Die kortste om te skryf
nadele:
- Min verspreiding
- Probleme om toetse uit te voer
bjam
ninja
Ninja is 'n stelsel wat deur Google ontwikkel is om 'n ultra-vinnige stelsel te skep wat oorspronklik ontwerp is om die van die Chromium-projek te wees. Ninja is nie ontwerp om maklik te verander nie, volgens sy eie outeurs moet 'n stelsel gevind word wat Ninja genereer. Aanbevole is CMake en gyp.
Pros:
- Muy rápido
nadele:
- U het 'n ander stelsel nodig om Ninja te kuit
- Min verspreiding
ninja
ander
U kan enige ander stelsel gebruik, soos u eie bash- of python-skrif. Daar is ook kragopwekkers vir ander nie-moedertale wat gebruik kan word soos Gradle, Maven, gyp, ens.
4 kommentaar, los joune
Make is nie 'n samestellingstelsel nie, dit is 'n kragopwekker van binaries (of teikens) uit die bronkode. Dit kan ook as 'n taakloper gebruik word.
Ek verskil met u dat die BSD-merk 'n wyer funksionaliteit het, dat die GNU-fabrikaat vollediger is, dat dit meer funksionaliteit het. En ek sê dit uit my eie ervaring: in BSD moet ek altyd GNU make installeer omdat BSD fabriek baie eenvoudig is in vergelyking met GNU fabriek.
Ek stem saam met u dat Autotools nogal omslagtig is. Ek gebruik verkieslik net die Makefile. Makefiles wat deur Autotools gegenereer word, is moeilik om te ontfout.
Groete!
Dankie vir kommentaar!
Volgens my was GNU-fabriek nog altyd meer tradisioneel en getrou aan die oorspronklike fabrieksprogram, en BSD-fabrikaat was nog altyd innoverender, maar ek het miskien ander dinge raakgesien toe ek die vergelyking getref het.
Autotools is regtig 'n groot kopseer. As 'n bydraer tot die Haiku-bedryfstelsel moes ek sagteware met outoto's wegdra, en dit is hel. Daar is nie 'n paar gevalle wat ek uiteindelik die Makefile of CMakeLists.txt gemaak het voordat ek die gemors reggemaak het nie.
Ek gebruik tans Premake4, baie instelbaar en eenvoudig gebaseer op Lua-skrifte. Kyk as jy dit nie weet nie.
Baie geluk met die artikel, eenvoudig en bondig, uitstekende verwysing.
'maak tjek' word gebruik om die samestelling na gebruik van merk te kontroleer
Groete