Kompilačné systémy. Okrem jednoduchej konfigurácie môžete vykonať aj vykonať inštaláciu

Všetci alebo takmer všetci (a ak nemáte šťastie) sme museli zostaviť program zo zdrojového kódu. Vlastne vo väčšine projektov stačí na inštaláciu programu urobiť ./configure && make && make install, ale uvidíme rôzne alternatívy:

Značka GNU

GNU Make je systém kompilácie na nízkej úrovni, je nakonfigurovaných málo vecí a nevykonávajú sa žiadne testy:

Pros:

  • Veľmi rozšírené
  • Jednoduché na pochopenie
  • Rýchlo

nevýhody:

  • Málo konfigurovateľné
  • Ťažko sa udržiava
  • Nevykonáva testy

make

Značka BSD

BSD Make je ďalšou verziou Make, ktorú v súčasnosti používajú operačné systémy * BSD. Líši sa od GNU Make, ktorý je najkomplexnejšou funkciou BSD Make vo funkcii, aj keď je menej rozšírený.

Pros:

  • Rýchlo
  • Jednoduché na pochopenie
  • Viac funkcií ako GNU Make

nevýhody:

  • Vo svete Linuxu nie je rozšírený
  • Nevykonáva testy
  • Málo konfigurovateľné
  • Ťažko sa udržiava

make

Automatické nástroje

Autotools je oficiálny systém GNU a generuje skript s názvom configure, ktorý musíme zavolať, aby sme vygenerovali zodpovedajúci súbor GNU Make Makefile. Je široko používaný, stále viac ľudí (vrátane mňa) si však myslí, že je príliš ťažkopádny, ťažký, pomalý a nie príliš kompatibilný.

Pros:

  • Vysoko konfigurovateľný
  • Veľmi rozšírené

nevýhody:

  • Nízka prenosnosť medzi systémami, ktoré nie sú systémami UNIX
  • Vykonajte príliš veľa testov (skontrolujte VŠETKO a VŠETKO je VŠETKO)
  • Pri nastavovaní veľmi pomalé
  • Zlá spätná kompatibilita

./configure && make

CMake

(Môj obľúbený systém) CMake je systém, ktorý slúži na vyrovnanie nedostatkov nástroja Autotools v mnohých aspektoch, ako je jeho strašná spätná kompatibilita a prenosnosť. Vylepšenie tiež testovacieho systému, ktorý je vysoko konfigurovateľný pre potreby každého projektu. Pravdou je, že čoraz viac projektov využíva CMake ako KDE, PortAudio, Ogre3D atď. Tento typ systému môžeme rozpoznať vďaka súboru CMakeLists.txt, ktorý vygeneruje Makefile alebo projekt pre Eclipse alebo CodeBlocks

Pros:

  • Rýchlo
  • Skvelá podpora viacerých platforiem
  • Testy môžete definovať veľmi prispôsobiteľným spôsobom

nevýhody:

  • Spočiatku ťažko pochopiteľné
  • Musíte pracovať s abstrakciou, ktorá môže byť spočiatku strašidelná
  • Malá šírka, aj keď pomaly rastie

cmake . && make

qmake

QMake je systém navrhnutý spoločnosťou Trolltech na kompiláciu projektov vytvorených v Qt. Týmto spôsobom qmake kladie veľký dôraz na Qt a zvyčajne je to formát používaný IDE, ako je QtCreator. Je pomerne populárny v projektoch Qt, ale nenájde sa mimo tohto prostredia:

Pros:

  • Veľmi dobre integrovaný s Qt
  • Rýchlo
  • Dobrá multiplatforma v rámci Qt

nevýhody:

  • Mimo aplikácií Qt neobvyklé

qmake . && make

SCons

SCons je systém založený na Pythone na kompiláciu projektov v C / C ++. Na rozdiel od Autotools, CMake alebo QMake; SCons nevytvára Makefile. SCons je veľmi modifikovateľný, ale je asi najpomalší v jednoduchých operáciách
Pros:

  • Ľahká úprava
  • Urobte si spravodlivé testy

nevýhody:

  • Malá nátierka
  • pomalý

scons

Posilniť. Jam

Boost.Jam je verzia Perforce Jam, ktorá sa používa v populárnych knižniciach C ++ Boost, hoci kompilačný systém je možné použiť aj samostatne. Na rozdiel od GNU Make používa Boost.Jam Jamfiles, ktoré sú vylepšenou verziou Makefiles. Sú pomerne populárne v prostredí BeOS / Zeta / Haiku.

Pros:

  • Rýchlo
  • Najkratšia na písanie

nevýhody:

  • Malá nátierka
  • Obtiažnosť pri vykonávaní testov

bjam

ninja

Ninja je systém vyvinutý spoločnosťou Google s cieľom poskytnúť ultrarýchly systém budovania, ktorý bol pôvodne navrhnutý ako projekt v rámci projektu Chromium. Ninja nie je navrhnutá tak, aby sa dala ľahko modifikovať, podľa vlastných autorov treba nájsť systém, ktorý Ninja generuje. Odporúčané sú CMake a gyp.

Pros:

  • Veľmi rýchlo

nevýhody:

  • Potrebujete iný systém na rozmnožovanie Ninja
  • Malá nátierka

ninja

Iné

Môžete použiť akýkoľvek iný systém, napríklad svoj vlastný skript bash alebo python. Existujú aj generátory pre ďalšie nepôvodné jazyky, ktoré je možné použiť, napríklad Gradle, Maven, gyp atď.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   abimaelmartell dijo

    Make nie je kompilačný systém, je to generátor binárnych súborov (alebo cieľov) z jeho zdrojového kódu. Môže byť tiež použitý ako bežca úloh.

    Líši sa s tebou, že značka BSD má širšiu funkcionalitu, značka GNU je úplnejšia a má viac funkcií. A hovorím to z vlastnej skúsenosti, v BSD musím vždy inštalovať GNU make, pretože BSD make je v porovnaní s GNU make veľmi jednoduchý.

    Súhlasím s vami, že Autotools je dosť ťažkopádny, radšej používam iba Makefile. Ladenie súborov generovaných programom Autotools je ťažké.

    Zdravím!

    1.    AdrianArroyoStreet dijo

      Ďakujem za komentár!
      Podľa môjho názoru bol make GNU vždy tradičnejší a vernejší pôvodnému programu make a BSD make bol vždy inovatívnejší, ale je možné, že som si pri porovnávaní všimol aj iné veci.

      Automatické nástroje sú naozaj veľká bolesť hlavy. Ako prispievateľ do operačného systému Haiku som musel prenášať softvér s automatickými nástrojmi a je to peklo. Nie je niekoľko prípadov, že by som pred opravením tohto neporiadku skončil vytvorením súboru Makefile alebo CMakeLists.txt.

  2.   Chuck daniels dijo

    Momentálne používam Premake4, veľmi konfigurovateľný a jednoduchý na základe skriptov Lua. Ak to neviete, rozhliadnite sa.
    Gratulujem k článku, jednoduché a výstižné, vynikajúca referencia.

  3.   ostatky dijo

    'make check' sa používa na kontrolu kompilácie po použití make
    Zdravím vás