2012-03-24 19 views
3

Unser Projekt wurde ziemlich groß und unser Build-System skaliert nicht mehr. Wir machen Cross-Plattform-Entwicklung auf Linux-Maschinen. Wir haben zu viele Plattformen, um gegen Optionen zu bauen und noch mehr zu bauen. Wir glauben, dass wir unsere Makefile-basierte Build-Umgebung aktualisieren müssen.linux build system tool

Dies sind die Anforderungen (in einer idealen Welt):

  • Schnell (also keine libtool)
  • Kann parallel baut
  • Kreuz kompilieren freundliche
  • ccache Integration inkrementelle
  • Does baut auf und kann einen Kurzschluss verursachen, wenn bestimmte Bedingungen erfüllt sind (Kurzschluss, wenn sich die Optionen a, b, c nicht geändert haben, wenn sie neu erstellt wurden)
  • Leicht skriptfähig (Python-Integration wäre perfekt)
  • Benutzerfreundliche Syntax
  • Verteiltes System. Module können separat voneinander entwickelt werden
  • Kann Bibliotheken von Drittanbietern erstellen (die autotools, cmake .. verwenden)
  • Kann Abhängigkeiten zwischen Modulen verfolgen (aber flexibel genug, sodass Module durch alternative externe Module ersetzt werden können).
  • Einbaugerät Testunterstützung
  • Große Binärdateien getrennt von der Versionskontrolle gespeichert und heruntergeladen, wenn
  • Spur von Open Source halten benötigt werden können Lizenzen
  • git Integration

Sind Ihnen irgendwelche Werkzeuge (oder eine Gruppe von Werkzeugen) bewusst, die (mindestens einige) dieser Anforderungen erfüllen? Zur Zeit lehne ich mich an gyp + ninja. Aber Syntax ist nicht sehr freundlich und es gibt keine Dokumentation. Es ist also ein harter Verkauf.

+0

Warum Libtool sofort ablehnen? Haben Sie moderne Versionen bewertet und bestätigt, dass diese nicht ausreichen? –

+0

Vor etwa 6 Monaten habe ich eines meiner Projekte (~ 4K Dateien) nach gyp verschoben. Es wurde zuvor auf configure/libtool erstellt. Die Bauzeit ging von Mitte 20 bis zu hohen Zehnern (in Minuten) zurück. Wenn im letzten Jahr keine drastischen Verbesserungen vorgenommen wurden, stehe ich hinter meiner Aussage. BTW das Zeit-Delta war niedriger auf meinem anderen Server, der SSDs hat. –

Antwort

1

Sie erwähnen Python Integration, so SCons klingt wie es würde die Rechnung passen. Es basiert vollständig auf Python (die Build-Skripte sind in der Tat Python-Skripte), es ist sehr flexibel und es erfüllt eine ganze Reihe Ihrer anderen Anforderungen.

Von der Website:

SCons ist ein Open-Source-Software Bau-Tool, das heißt, ein Werkzeug zu bauen nächste Generation. Stellen Sie sich SCOs als verbesserten, plattformübergreifenden Ersatz für das klassische Make-Dienstprogramm mit integrierter Funktionalität vor, die autoconf/automake und Compiler-Caches wie ccache ähnelt. Kurz gesagt, SCons ist ein einfacher, zuverlässiger und schneller Weg, um Software zu bauen.

1

Wie für C++ betroffen ist, ist ein sehr gutes Build-System CMake.

0

ninja sollte nicht vom Endbenutzer verwendet werden, sondern von einem anderen High-Level-Build-Tool wie CMake. Und das ist wirklich eine gute Option, besonders für große und plattformübergreifende Projekte. Es hat keine eingebaute Python-Unterstützung, aber Sie brauchen selten oder nie externe Skripte mit CMake - es hat Werkzeuge für die meisten üblichen Aufgaben.