Kõik või peaaegu kõik (ja kui teil pole õnne), oleme pidanud lähtekoodist koostama programmi. Tegelikult piisab enamikus projektides programmi installimiseks ./configure && make && make installist, kuid näeme erinevaid alternatiive:
GNU kaubamärk
GNU Make on madala taseme kompileerimissüsteem, vähe asju on konfigureeritud ja teste ei tehta:
Plussid:
- Väga laialt levinud
- Lihtne mõista
- Kiire
Miinused:
- Vähe seadistatav
- Raske hooldada
- Ei tee katseid
make
BSD Mark
BSD Make on veel üks Make versioon, mida praegu kasutavad * BSD operatsioonisüsteemid. See erineb GNU Make-st, olles funktsionaalsuse poolest kõige põhjalikum BSD Make, kuigi see on vähem levinud.
Plussid:
- Kiire
- Lihtne mõista
- Rohkem funktsioone kui GNU Make
Miinused:
- Pole levinud Linuxi maailmas
- Ei tee katseid
- Vähe seadistatav
- Raske hooldada
make
Autotööriistad
Autotools on ametlik GNU süsteem ja genereerib skripti nimega configure, millele peame helistama, et luua vastav Makefile GNU Make'st. Seda laiendatakse laialdaselt, kuid üha enam inimesi (ka mina) arvan, et see on liiga tülikas, keeruline, aeglane ja pole eriti ühilduv.
Plussid:
- Väga konfigureeritav
- Väga laialt levinud
Miinused:
- Vähe teisaldatavust mitte-UNIX-süsteemide vahel
- Tehke liiga palju teste (kontrollige KÕIK ja KÕIK ON KÕIK)
- Konfigureerimisel väga aeglane
- Kehv tagurpidi ühilduvus
./configure && make
CMake
(Minu lemmiksüsteem) CMake on süsteem, mis korvab Autotoolsi puudused paljudes aspektides, näiteks selle kohutava tahapoole ühilduvuse ja kaasaskantavuse osas. Samuti täiustatakse testsüsteemi, mis on iga projekti vajaduste jaoks väga konfigureeritav. Tõde on see, et üha rohkem projekte kasutab CMake'i nagu KDE, PortAudio, Ogre3D jne. Seda tüüpi süsteeme võime ära tunda tänu failile CMakeLists.txt, mis loob Makefile'i või Eclipse'i või CodeBlocksi projekti
Plussid:
- Kiire
- Suurepärane platvormidevaheline tugi
- Teste saate määratleda väga kohandataval viisil
Miinused:
- Esialgu raske aru saada
- Tuleb töötada abstraktsiooniga, mis võib alguses hirmutav olla
- Vähe levinud, kuigi vähehaaval kasvab
cmake . && make
Q Tee
QMake on süsteem, mille on välja töötanud Trolltech Qt-s tehtud projektide koostamiseks. Nii paneb qmake palju rõhku Qt-le ja seda vormingut kasutavad tavaliselt IDE-d, näiteks QtCreator. See on Qt-projektides üsna populaarne, kuid seda ei leidu väljaspool seda keskkonda:
Plussid:
- Qt-ga väga hästi integreeritud
- Kiire
- Hea multiplatvorm Qt piires
Miinused:
- Aeg-ajalt väljaspool Qt-rakendusi
qmake . && make
Pojad
SCons on Pythoni-põhine süsteem C / C ++ projektide koostamiseks. Erinevalt Autotoolsist, CMake või QMake; SCons ei ehita Makefile'i. SCons on väga muudetav, kuid võib-olla on see kõige aeglasem lihtsate toimingute korral
Plussid:
- Lihtne modifitseerimine
- Tehke õiglased testid
Miinused:
- Vähe levinud
- Aeglane
scons
Boost. Jam
Boost.Jam on Perforce Jam versioon, mida kasutatakse populaarsetes C ++ Boosti teekides, kuigi kompileerimissüsteemi saab kasutada eraldi. Erinevalt GNU Make'st kasutab Boost.Jam Jamfileesi, mis on Makefileesi täiustatud versioon. Need on BeOS / Zeta / Haiku keskkonnas üsna populaarsed.
Plussid:
- Kiire
- Lühim kirjutada
Miinused:
- Vähe levinud
- Katsete sooritamise raskused
bjam
Ninja
Ninja on Google'i välja töötatud süsteem, mis pakub algselt Chromiumi projekti jaoks mõeldud ülikiiret ehitussüsteemi. Ninja ei ole loodud nii, et seda oleks lihtne muuta, tema enda autorite sõnul tuleb leida süsteem, mis genereerib Ninjat. Soovitatavad on CMake ja gyp.
Plussid:
- Muy rápido
Miinused:
- Ninja kudemiseks vajate teist süsteemi
- Vähe levinud
ninja
teised
Võite kasutada mis tahes muud süsteemi, näiteks oma bashi või pythoni skripti. Samuti on olemas generaatorid teistele muukeelsetele keeltele, mida saab kasutada nagu Gradle, Maven, gyp jne.
Make ei ole kompileerimissüsteem, see on binaaride (või sihtmärkide) generaator lähtekoodist. Seda saab kasutada ka ülesannete jooksjana.
Ma eristan teiega, et BSD-i kaubamärk on funktsionaalsuse poolest laiem, GNU-i versioon on terviklikum, sellel on rohkem funktsionaalsust. Ja ma ütlen seda omast kogemusest. BSD-s pean alati installima GNU make, sest BSD make on GNU make-ga võrreldes väga lihtne.
Nõustun teiega, et Autotools on üsna tülikas, eelistan kasutada lihtsalt Makefile'i. Autotoolsi loodud makefaile on raske siluda.
Tervitused!
Täname kommentaari eest!
Minu arvates on GNU make olnud alati traditsioonilisem ja originaalsele make-programmile truu ning BSD make on alati olnud uuendusmeelsem, kuid võib juhtuda, et olen võrdluse tegemisel märganud muid asju.
Autotööriistad on tõesti suur peavalu. Haiku operatsioonisüsteemi kaasautorina olen pidanud autotoolidega tarkvara teisaldama ja see on pagan. Pole vähe juhtumeid, kus ma enne selle segaduse parandamist lõin Makefile'i või CMakeLists.txt.
Praegu kasutan Lua skriptide põhjal väga konfigureeritavat ja lihtsat Premake4. Heitke pilk, kui te seda ei tea.
Palju õnne artikli puhul, lihtne ja kokkuvõtlik, suurepärane viide.
'make check' kasutatakse kompileerimise kontrollimiseks pärast make kasutamist
Tervitused