Vsi ali skoraj vsi (in če nimate sreče) smo morali sestaviti program iz izvorne kode. Pravzaprav je v večini projektov dovolj, da namestite program ./configure && make && make install, vendar bomo videli različne možnosti:
Ustvari GNU
GNU Make je sistem prevajanja na nizki ravni, konfigurirano je nekaj stvari in testi se ne izvajajo:
Prednosti:
- Zelo razširjena
- Preprosto za razumevanje
- Hitro
Proti:
- Malo nastavljivo
- Težko vzdrževati
- Ne izvaja testov
make
BSD Znamka
BSD Make je druga različica znamke, ki jo trenutno uporabljajo * BSD operacijski sistemi. Razlikuje se od GNU Make, saj je najobsežnejši BSD Make po funkcionalnosti, čeprav je manj razširjen.
Prednosti:
- Hitro
- Preprosto za razumevanje
- Več funkcij kot GNU Make
Proti:
- Ni razširjen v svetu Linuxa
- Ne izvaja testov
- Malo nastavljivo
- Težko vzdrževati
make
Samodejna orodja
Autotools je uradni sistem GNU in ustvari skript, imenovan configure, ki ga moramo poklicati, da ustvarimo ustrezen GNU Make Makefile. Na splošno je razširjen, vendar vse več ljudi (vključno z mano) meni, da je preveč okoren, težaven, počasen in ne preveč združljiv.
Prednosti:
- Zelo nastavljiv
- Zelo razširjena
Proti:
- Majhna prenosljivost med sistemi, ki niso UNIX
- Izvedite preveč testov (preverite VSE in VSE JE VSE)
- Zelo počasno pri konfiguriranju
- Slaba združljivost za nazaj
./configure && make
CMake
(Moj najljubši sistem) CMake je sistem, ki v mnogih pogledih nadoknadi pomanjkljivosti Autotools, na primer njegovo strašno združljivost in prenosljivost. Izboljša tudi testni sistem, ki je zelo prilagodljiv za potrebe vsakega projekta. Resnica je, da vedno več projektov uporablja CMake, kot so KDE, PortAudio, Ogre3D itd. Tovrstne sisteme lahko prepoznamo po datoteki CMakeLists.txt, ki bo ustvarila datoteko Makefile ali projekt za Eclipse ali CodeBlocks
Prednosti:
- Hitro
- Odlična podpora za več platform
- Preizkuse lahko definirate na zelo prilagodljiv način
Proti:
- Sprva težko razumljiv
- Delati morate z abstrakcijo, ki je sprva lahko strašljiva
- Malo se širi, čeprav malo po malo raste
cmake . && make
Q Izdelava
QMake je sistem, ki ga je Trolltech oblikoval za zbiranje projektov, izdelanih v Qt. Na ta način qmake veliko poudarja Qt in je običajno oblika, ki jo uporabljajo IDE-ji, kot je QtCreator. Je zelo priljubljen v projektih Qt, vendar ga ni mogoče najti zunaj tega okolja:
Prednosti:
- Zelo dobro integriran s Qt
- Hitro
- Dobra multiplatforma znotraj Qt
Proti:
- Občasni zunaj aplikacij Qt
qmake . && make
SCons
SCons je sistem za sestavljanje projektov C / C ++, ki temelji na Pythonu. Za razliko od Autotools, CMake ali QMake; SCons ne gradi datoteke datotek Make. SCons je zelo prilagodljiv, vendar je morda najpočasnejši pri preprostih operacijah
Prednosti:
- Enostavna sprememba
- Opravite poštene teste
Proti:
- Malo širjenja
- Počasi
scons
Boost Jam
Boost.Jam je različica Perforce Jam, ki se uporablja v priljubljenih knjižnicah C ++ Boost, čeprav je sistem prevajanja mogoče uporabiti ločeno. Za razliko od GNU Make, Boost.Jam uporablja datoteke Jamfiles, ki so izboljšana različica datotek Makefiles. V okolju BeOS / Zeta / Haiku so zelo priljubljeni.
Prednosti:
- Hitro
- Najkrajši za pisanje
Proti:
- Malo širjenja
- Težave pri izvajanju testov
bjam
ninja
Ninja je sistem, ki ga je razvil Google za zagotavljanje ultrahitrega sistema za izdelavo, ki je bil prvotno zasnovan kot sistem Chromium. Ninja ni zasnovana tako, da bi jo bilo enostavno spreminjati, po mnenju njenih avtorjev bi bilo treba najti sistem, ki generira Ninjo. Priporočljivi so CMake in gyp.
Prednosti:
- Muy rápido
Proti:
- Za drstenje Ninje potrebujete drug sistem
- Malo širjenja
ninja
drugi
Uporabite lahko kateri koli drug sistem, na primer lasten skript bash ali python. Obstajajo tudi generatorji za druge tuje jezike, ki jih je mogoče uporabiti, kot so Gradle, Maven, gyp itd.
Make ni sistem kompilacije, je generator binarnih datotek (ali ciljev) iz izvorne kode. Lahko se uporablja tudi kot izvajalec opravil.
Z vami se razlikujem, da je znamka BSD po funkcionalnosti širša, znamka GNU je bolj popolna in ima več funkcionalnosti. In to rečem iz lastnih izkušenj, v BSD moram vedno namestiti GNU make, ker je BSD make zelo preprost v primerjavi z GNU make.
Strinjam se z vami, da je Autotools precej okoren, raje uporabljam samo datoteko Makefile. Makefile, ki jih ustvari Autotools, je težko odpraviti.
Lep pozdrav!
Hvala za komentar!
Po mojem mnenju je bila znamka GNU vedno bolj tradicionalna in zvesta prvotnemu programu make, znamka BSD pa je bila vedno bolj inovativna, vendar sem morda med primerjavo opazil še druge stvari.
Avto orodja so res velik glavobol. Kot sodelavec operacijskega sistema Haiku sem moral priklopiti programsko opremo z samodejnimi orodji in to je hudič. Ni malo primerov, da sem na koncu ustvaril datoteko Makefile ali CMakeLists.txt, preden sem popravil to nered.
Trenutno uporabljam Premake4, zelo prilagodljiv in preprost na podlagi skriptov Lua. Poglejte, če tega ne veste.
Čestitke za članek, preprosto in jedrnato, odlična referenca.
'make check' se uporablja za preverjanje prevajanja po uporabi make
Pozdravi