Zusammenstellungssysteme. Über die einfache Konfiguration hinaus machen, machen, installieren

Alle oder fast alle (und wenn Sie kein Glück haben) mussten wir ein Programm aus dem Quellcode kompilieren. Tatsächlich reicht es in den meisten Projekten aus, eine ./configure && make && make-Installation durchzuführen, um das Programm zu installieren, aber wir werden die verschiedenen Alternativen sehen:

GNU machen

GNU Make ist ein Kompilierungssystem auf niedriger Ebene, es werden nur wenige Dinge konfiguriert und keine Tests durchgeführt:

Vorteile:

  • Sehr weit verbreitet
  • Einfach zu verstehen
  • Schnelle

Nachteile:

  • Wenig konfigurierbar
  • Schwer zu pflegen
  • Führt keine Tests durch

make

BSD machen

BSD Make ist eine weitere Version von Make, die derzeit von * BSD-Betriebssystemen verwendet wird. Es unterscheidet sich von GNU Make und ist das umfassendste BSD Make in der Funktionalität, obwohl es weniger verbreitet ist.

Vorteile:

  • Schnelle
  • Einfach zu verstehen
  • Mehr Funktionen als GNU Make

Nachteile:

  • In der Linux-Welt nicht weit verbreitet
  • Führt keine Tests durch
  • Wenig konfigurierbar
  • Schwer zu pflegen

make

Auto-Tools

Autotools ist das offizielle GNU-System und generiert ein Skript namens configure, das wir aufrufen müssen, um das entsprechende GNU Make Makefile zu generieren. Es ist weit verbreitet, aber immer mehr Leute (ich eingeschlossen) denken, dass es zu umständlich, schwierig, langsam und nicht sehr kompatibel ist.

Vorteile:

  • Sehr konfigurierbar
  • Sehr weit verbreitet

Nachteile:

  • Geringe Portabilität zwischen Nicht-UNIX-Systemen
  • Führen Sie zu viele Tests durch (überprüfen Sie ALLES und ALLES ist ALLES)
  • Sehr langsam beim Einstellen
  • Schlechte Abwärtskompatibilität

./configure && make

CMake

(Mein bevorzugtes System) CMake ist ein System, das die Mängel von Autotools in vielerlei Hinsicht ausgleicht, beispielsweise in Bezug auf ihre schreckliche Abwärtskompatibilität und Portabilität. Verbessern Sie auch das Testsystem, das für die Anforderungen jedes Projekts hochgradig konfigurierbar ist. Die Wahrheit ist, dass immer mehr Projekte CMake wie KDE, PortAudio, Ogre3D usw. verwenden. Wir können diese Art von Systemen dank einer CMakeLists.txt-Datei erkennen, die ein Makefile oder ein Projekt für Eclipse oder CodeBlocks generiert

Vorteile:

  • Schnelle
  • Großartige plattformübergreifende Unterstützung
  • Sie können die Tests auf sehr anpassbare Weise definieren

Nachteile:

  • Anfangs schwer zu verstehen
  • Sie müssen mit einer Abstraktion arbeiten, die zunächst beängstigend sein kann
  • Wenig verbreitet, obwohl es nach und nach wächst

cmake . && make

QMachen

QMake ist ein von Trolltech entwickeltes System zum Kompilieren von in Qt erstellten Projekten. Auf diese Weise legt qmake großen Wert auf Qt und ist normalerweise das Format, das von IDEs wie QtCreator verwendet wird. Es ist in Qt-Projekten sehr beliebt, wird aber außerhalb dieser Umgebung nicht gefunden:

Vorteile:

  • Sehr gut in Qt integriert
  • Schnelle
  • Gute Multiplattform innerhalb von Qt

Nachteile:

  • Außerhalb von Qt-Apps ungewöhnlich

qmake . && make

SCons

SCons ist ein Python-basiertes System zum Kompilieren von C / C ++ - Projekten. Im Gegensatz zu Autotools, CMake oder QMake; SCons erstellt kein Makefile. SCons ist sehr modifizierbar, aber bei einfachen Operationen möglicherweise am langsamsten
Vorteile:

  • Einfache Änderung
  • Machen Sie die fairen Tests

Nachteile:

  • Wenig verbreitet
  • langsam

scons

Boost-Marmelade

Boost.Jam ist eine Version von Perforce Jam, die in den beliebten C ++ Boost-Bibliotheken verwendet wird, obwohl das Kompilierungssystem separat verwendet werden kann. Im Gegensatz zu GNU Make verwendet Boost.Jam Jamfiles, eine verbesserte Version von Makefiles. Sie sind in der BeOS / Zeta / Haiku-Umgebung sehr beliebt.

Vorteile:

  • Schnelle
  • Am kürzesten zu schreiben

Nachteile:

  • Wenig verbreitet
  • Schwierigkeiten bei der Durchführung von Tests

bjam

Ninja

Ninja ist ein System, das von Google entwickelt wurde, um ein ultraschnelles Build-System bereitzustellen, das ursprünglich für das Chromium-Projekt entwickelt wurde. Ninja ist nicht so konzipiert, dass es einfach zu modifizieren ist. Laut eigenen Autoren muss ein System gefunden werden, das Ninja generiert. Empfohlen werden CMake und Gyp.

Vorteile:

  • Muy Rapido

Nachteile:

  • Sie benötigen ein anderes System, um Ninja zu erzeugen
  • Wenig verbreitet

ninja

Weitere KFZ-Pakete

Sie können jedes andere System verwenden, z. B. Ihr eigenes Bash- oder Python-Skript. Es gibt auch Generatoren für andere nicht-muttersprachliche Sprachen, die wie Gradle, Maven, Gyp usw. verwendet werden können.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   abimaelmartell sagte

    Make ist kein Kompilierungssystem, sondern ein Generator von Binärdateien (oder Zielen) aus dem Quellcode. Es kann auch als Task-Runner verwendet werden.

    Ich unterscheide mich bei Ihnen, dass die BSD-Marke eine breitere Funktionalität aufweist, die GNU-Marke vollständiger ist und mehr Funktionalität bietet. Und ich sage dies aus eigener Erfahrung, in BSD muss ich immer GNU make installieren, weil BSD make im Vergleich zu GNU make sehr einfach ist.

    Ich stimme Ihnen zu, dass Autotools ziemlich umständlich ist. Ich bevorzuge es, nur das Makefile zu verwenden. Von Autotools generierte Makefiles sind schwer zu debuggen.

    Viele Grüße!

    1.    AdrianArroyoStreet sagte

      Vielen Dank für die Kommentare!
      Meiner Meinung nach war GNU make immer traditioneller und dem ursprünglichen make-Programm treu, und BSD make war immer innovativer, aber ich habe beim Vergleich möglicherweise andere Dinge bemerkt.

      Autotools sind wirklich große Kopfschmerzen. Als Mitwirkender am Haiku-Betriebssystem musste ich Software mit Autotools portieren und es ist die Hölle. Es gibt nicht wenige Fälle, in denen ich das Makefile oder die CMakeLists.txt erstellt habe, bevor ich dieses Problem behoben habe.

  2.   Chuck Daniels sagte

    Ich verwende derzeit Premake4, sehr konfigurierbar und einfach basierend auf Lua-Skripten. Schauen Sie, wenn Sie es nicht wissen.
    Herzlichen Glückwunsch zum Artikel, einfach und prägnant, ausgezeichnete Referenz.

  3.   Knochen sagte

    'make check' wird verwendet, um die Kompilierung nach Verwendung von make zu überprüfen
    Schöne Grüße