Kompilační systémy. Kromě jednoduché konfigurace, vytváření a instalace

Všichni nebo téměř všichni (a pokud nemáte štěstí) jsme museli sestavit program ze zdrojového kódu. Ve skutečnosti ve většině projektů stačí k instalaci programu provést ./configure && make && make install, ale uvidíme různé alternativy:

Značka GNU

GNU Make je kompilační systém nízké úrovně, je nakonfigurováno několik věcí a neprovádějí se žádné testy:

Klady:

  • Velmi rozšířené
  • Snadno pochopitelné
  • Rychle

Nevýhody:

  • Trochu konfigurovatelný
  • Je obtížné udržovat
  • Neprovádí testy

make

Značka BSD

BSD Make je další verze Make, kterou aktuálně používají operační systémy * BSD. Liší se tím, že GNU Make je nejobsáhlejší BSD Make ve funkcích, i když je méně rozšířený.

Klady:

  • Rychle
  • Snadno pochopitelné
  • Více funkcí než GNU Make

Nevýhody:

  • Ve světě Linuxu není příliš rozšířený
  • Neprovádí testy
  • Trochu konfigurovatelný
  • Je obtížné udržovat

make

Automatické nástroje

Autotools je oficiální systém GNU a generuje skript s názvem configure, který musíme zavolat, abychom vygenerovali odpovídající Makefile z GNU Make. Je široce používán, ale stále více lidí (včetně mě) si myslí, že je to příliš těžkopádné, obtížné, pomalé a málo kompatibilní.

Klady:

  • Vysoce konfigurovatelné
  • Velmi rozšířené

Nevýhody:

  • Malá přenositelnost mezi systémy jinými než UNIX
  • Proveďte příliš mnoho testů (zkontrolujte VŠE a VŠE je VŠE)
  • Při nastavování velmi pomalé
  • Špatná zpětná kompatibilita

./configure && make

CMake

(Můj preferovaný systém) CMake je systém, který vyrovnává nedostatky Autotools v mnoha aspektech, jako je jejich strašná zpětná kompatibilita a přenositelnost. Také vylepšení testovacího systému, který je vysoce konfigurovatelný pro potřeby každého projektu. Pravdou je, že stále více projektů používá CMake, jako je KDE, PortAudio, Ogre3D atd. Tento typ systému můžeme rozpoznat díky souboru CMakeLists.txt, který vygeneruje Makefile nebo projekt pro Eclipse nebo CodeBlocks

Klady:

  • Rychle
  • Skvělá podpora pro různé platformy
  • Testy můžete definovat velmi přizpůsobitelným způsobem

Nevýhody:

  • Zpočátku těžko pochopitelné
  • Musíte pracovat s abstrakcí, která může být zpočátku strašidelná
  • Malé šíření, i když kousek po kousku, roste

cmake . && make

Q Make

QMake je systém navržený společností Trolltech pro kompilaci projektů vytvořených v Qt. Tímto způsobem qmake klade velký důraz na Qt a obvykle jde o formát používaný IDE jako QtCreator. Je docela populární v projektech Qt, ale mimo toto prostředí se nenachází:

Klady:

  • Velmi dobře integrovaný s Qt
  • Rychle
  • Dobrá multiplatforma v Qt

Nevýhody:

  • Mimo aplikace Qt neobvyklé

qmake . && make

SCon

SCons je systém založený na Pythonu pro kompilaci projektů C / C ++. Na rozdíl od Autotools, CMake nebo QMake; SCons nevytváří Makefile. SCons je velmi upravitelný, ale je snad nejpomalejší v jednoduchých operacích
Klady:

  • Snadná modifikace
  • Proveďte spravedlivé testy

Nevýhody:

  • Malá pomazánka
  • Pomalu

scons

Zvyšte

Boost.Jam je verze Perforce Jam, která se používá v populárních knihovnách C ++ Boost, ačkoli kompilační systém lze použít samostatně. Na rozdíl od GNU Make používá Boost.Jam Jamfiles, které jsou vylepšenou verzí Makefiles. Jsou docela populární v prostředí BeOS / Zeta / Haiku.

Klady:

  • Rychle
  • Nejkratší k psaní

Nevýhody:

  • Malá pomazánka
  • Obtížnost při provádění testů

bjam

Ninja

Ninja je systém vyvinutý společností Google za účelem poskytnutí ultrarychlého systému sestavení, který byl původně navržen jako projekt Chromium. Ninja není navržena tak, aby se dala snadno upravit, podle vlastních autorů je třeba najít systém, který ninja generuje. Doporučené jsou CMake a gyp.

Klady:

  • Muy rápido

Nevýhody:

  • K rozmístění Ninja potřebujete jiný systém
  • Malá pomazánka

ninja

ostatní

Můžete použít jakýkoli jiný systém, například svůj vlastní skript bash nebo python. K dispozici jsou také generátory pro jiné nepůvodní jazyky, které lze použít, jako je Gradle, Maven, gyp atd.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   abimaelmartell řekl

    Make není kompilační systém, je to generátor binárních souborů (nebo cílů) z jeho zdrojového kódu. Lze jej také použít jako běžce úloh.

    Liším se s vámi, že značka BSD má širší funkčnost, značka GNU je úplnější, má více funkcí. A říkám to z vlastní zkušenosti, v BSD musím vždy instalovat GNU make, protože BSD make je ve srovnání s GNU make velmi jednoduchý.

    Souhlasím s vámi, že Autotools je docela těžkopádný, raději používám Makefile. Makefiles generované Autotools je obtížné ladit.

    Zdravím!

    1.    AdrianArroyo Street řekl

      Děkuji za komentář!
      Podle mého názoru byl GNU make vždy tradičnější a věrnější původnímu programu make a BSD make byl vždy inovativnější, ale je možné, že jsem si při srovnávání všiml i jiných věcí.

      Automatické nástroje jsou opravdu velká bolest hlavy. Jako přispěvatel do operačního systému Haiku jsem musel portovat software s automatickými nástroji a je to peklo. Není několik případů, že jsem před vytvořením tohoto nepořádku skončil vytvořením Makefile nebo CMakeLists.txt.

  2.   Chuck daniels řekl

    V současné době používám Premake4, velmi konfigurovatelný a jednoduchý na základě skriptů Lua. Podívejte se, pokud to nevíte.
    Gratuluji k článku, jednoduché a výstižné, vynikající reference.

  3.   Kosti řekl

    'make check' se používá ke kontrole kompilace po použití make
    Pozdravy