Kaikki tai melkein kaikki (ja jos et ole onnekas), meidän on täytynyt koota ohjelma lähdekoodista. Itse asiassa useimmissa projekteissa riittää, että suoritat ./configure && make && make install ohjelman asentamiseksi, mutta aiomme nähdä erilaisia vaihtoehtoja:
GNU-merkki
GNU Make on matalan tason kokoamisjärjestelmä, muutamia asioita on määritetty eikä testejä suoriteta:
Plussat:
- Erittäin laajalle levinnyt
- Helppo ymmärtää
- Nopeasti
miinukset:
- Hieman konfiguroitavissa
- Vaikea ylläpitää
- Ei tee testejä
make
BSD-merkki
BSD Make on toinen Make-versio, jota tällä hetkellä * BSD -käyttöjärjestelmät käyttävät. Se eroaa GNU Make: sta, koska se on kattavin BSD Make -ominaisuus toiminnallisuudessa, vaikka se on vähemmän levinnyt.
Plussat:
- Nopeasti
- Helppo ymmärtää
- Enemmän ominaisuuksia kuin GNU Make
miinukset:
- Ei levinnyt Linux-maailmassa
- Ei tee testejä
- Hieman konfiguroitavissa
- Vaikea ylläpitää
make
Automaattiset välineet
Autotools on virallinen GNU-järjestelmä, ja se luo komentosarjan nimeltä configure, joka meidän on kutsuttava vastaavan Makefile-tiedoston luomiseksi GNU Make -sovelluksesta. Se on levinnyt laajasti, mutta yhä useammat ihmiset (minä mukaan lukien) ajattelevat, että se on liian hankala, vaikea, hidas eikä kovin yhteensopiva.
Plussat:
- Erittäin konfiguroitavissa
- Erittäin laajalle levinnyt
miinukset:
- Vähän siirrettävyyttä muiden kuin UNIX-järjestelmien välillä
- Suorita liian monta testiä (tarkista KAIKKI, ja KAIKKI ON KAIKKI)
- Erittäin hidas asetettaessa
- Huono taaksepäin yhteensopivuus
./configure && make
CTee
(Suosikkijärjestelmäni) CMake on järjestelmä, joka korjaa Autotoolsin puutteet monilta osin, kuten sen kauhea taaksepäin yhteensopivuus ja siirrettävyys. Parannetaan myös testijärjestelmää, joka on erittäin konfiguroitavissa kunkin projektin tarpeisiin. Totuus on, että yhä useammat projektit käyttävät CMakea, kuten KDE, PortAudio, Ogre3D jne. Tunnistamme tämäntyyppiset järjestelmät CMakeLists.txt-tiedoston ansiosta, joka luo Makefile-tiedoston tai projektin Eclipse- tai CodeBlocks-ohjelmalle.
Plussat:
- Nopeasti
- Suuri alustojen välinen tuki
- Voit määrittää testit hyvin muokattavalla tavalla
miinukset:
- Aluksi vaikea ymmärtää
- Sinun on työskenneltävä abstraktin kanssa, joka voi olla aluksi pelottavaa
- Vähän levinnyt, vaikka vähitellen se kasvaa
cmake . && make
Q Tee
QMake on Trolltechin suunnittelema järjestelmä Qt: ssä tehtyjen projektien kokoamiseksi. Tällä tavalla qmake painottaa paljon Qt: tä ja on yleensä IDE: n, kuten QtCreatorin, käyttämä muoto. Se on melko suosittu Qt-projekteissa, mutta sitä ei löydy tämän ympäristön ulkopuolelta:
Plussat:
- Erittäin hyvin integroitu Qt: n kanssa
- Nopeasti
- Hyvä monitasoinen Qt
miinukset:
- Melko harvinainen Qt-sovellusten ulkopuolella
qmake . && make
SCons
SCons on Python-pohjainen järjestelmä C / C ++ -projektien kokoamiseen. Toisin kuin Autotools, CMake tai QMake; SCons ei rakenna Makefile-tiedostoa. SCons on erittäin muokattavissa, mutta se on ehkä hitain yksinkertaisissa toiminnoissa
Plussat:
- Helppo muokkaus
- Suorita oikeudenmukaiset testit
miinukset:
- Vähän levinnyt
- hidas
scons
Tehosta hilloa
Boost.Jam on Perforce Jam -versio, jota käytetään suosituissa C ++ Boost -kirjastoissa, vaikka kokoamisjärjestelmää voidaan käyttää erikseen. Toisin kuin GNU Make, Boost.Jam käyttää Jamfileitä, jotka ovat parannettu versio Makefileistä. Ne ovat melko suosittuja BeOS / Zeta / Haiku-ympäristössä.
Plussat:
- Nopeasti
- Lyhyin kirjoittaa
miinukset:
- Vähän levinnyt
- Testien suorittamisen vaikeus
bjam
Ninja
Ninja on Googlen kehittämä järjestelmä tarjoamaan erittäin nopea rakennusjärjestelmä, joka on alun perin suunniteltu Chromium-projektin järjestelmäksi. Ninjaa ei ole suunniteltu niin, että sitä olisi helppo muokata, sen omien kirjoittajien mukaan on löydettävä järjestelmä, joka tuottaa Ninjan. Suositeltavia ovat CMake ja gyp.
Plussat:
- Muy rápido
miinukset:
- Tarvitset toisen järjestelmän Ninjan kutemiseen
- Vähän levinnyt
ninja
Muu
Voit käyttää mitä tahansa muuta järjestelmää, kuten omaa bash- tai python-komentosarjaasi. On myös generaattoreita muille ei-äidinkielille, joita voidaan käyttää, kuten Gradle, Maven, gyp jne.
Make ei ole kokoamisjärjestelmä, se on binäärien (tai kohteiden) generaattori lähdekoodistaan. Sitä voidaan käyttää myös tehtävän juoksijana.
Olen eri mieltä kanssasi siitä, että BSD-merkki on toiminnallisuutta laajempi, GNU-merkki on täydellisempi, sillä on enemmän toiminnallisuutta. Ja sanon tämän omasta kokemuksestani, BSD: ssä minun on aina asennettava GNU make, koska BSD make on hyvin yksinkertainen verrattuna GNU makeen.
Olen kanssasi samaa mieltä siitä, että Autotools on melko hankala, haluan käyttää vain Makefileä. Autotoolsin luomia tiedostoja on vaikea virheenkorjaus.
Tervehdys!
Kiitos kommentista!
Mielestäni GNU-merkki on aina ollut perinteisempää ja uskollisempaa alkuperäiselle merkkiohjelmalle ja BSD-merkki on aina ollut innovatiivisempi, mutta voi olla, että olen huomannut muita asioita vertailussa.
Autotyökalut ovat todella iso päänsärky. Haiku-käyttöjärjestelmän avustajana minun on pitänyt siirtää ohjelmistoja autotooleilla, ja se on helvettiä. Ei ole olemassa muutamia tapauksia, joissa päädyin luomaan Makefile- tai CMakeLists.txt-tiedoston ennen tämän ongelman korjaamista.
Käytän tällä hetkellä Premake4: ää, joka on hyvin konfiguroitavissa ja yksinkertainen Lua-skripteihin perustuen. Katso, jos et tiedä sitä.
Onnittelut artikkelista, yksinkertainen ja ytimekäs, erinomainen viite.
'make check' käytetään tarkistamaan kokoomateos merkin käytön jälkeen
Terveisiä