Koostamissüsteemid. Lisaks lihtsale seadistamisele, valmistamisele, installimisele

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.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   abimaelmartell DIJO

    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!

    1.    AdrianArroyo tänav DIJO

      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.

  2.   Chuck daniels DIJO

    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.

  3.   Luud DIJO

    'make check' kasutatakse kompileerimise kontrollimiseks pärast make kasutamist
    Tervitused