2010-11-09 8 views
14

Ich habe in letzter Zeit Build-Systeme und ich kann nichts finden, was ich will. Ich betrachte zu niedrigen Ende, ich mag nicht die Syntax von bjam und CMake, und ich mag es wirklich nicht, dass sie nur für C/C++ sind. Ant und NAnt sind auch zu sprachorientiert.Python-basierte Build-Tools

Ich mag die Idee eines Build-Tools, das eine echte Programmiersprache verwendet und Python passt wirklich gut. Ich habe mich bei Scons und waf, und von diesen 2 finde ich waf als nächstes zu, was ich will, aber immer noch ich eine Menge Arbeit zu sehen, dass die Unterstützung getan werden muss, um alles geplant, wenn ich mich auf das Programmieren konzentrieren sollte. Hier

ist das, was ich will:

  • umfasst und Bibliotheken (für C/C++, Java, C#, Python)

  • ich verschiedene Versionen von Compiler verwenden möchte, und unterschiedliches Ziel OS unterstützen und CPU-Architekturen:

    • für C/C++: MSVC, gcc (cygwin, mingw, linux-Version), llvm-gcc, DragonEgg, Clang
    • für C#: .Net-Compiler, Mono (für Windows und Linux) - alle für verschiedene .Net-Versionen (wie NAnt's: 'net-2.0', 'net-3.5', 'net-4.0', 'mono-2.0 ‘, 'Mono-3.5' ...)
  • I SWIG zu unterstützen Wrapper-Generierung für C#, Python, Lua, Java usw.

  • ich will mehr als nur Debug verwenden möchten und Release-Konfigurationen - genau wie Visual Studio dies wirklich einfach unterstützt. Beispiel: Shared Library Projekt erstellt MSVC für C# -Wrapping, und mit Mingw für Python-Wrapping, verschiedene Versionen der Release-Versionen gebaut - mit nicht-optimierten, vollständig optimiert, Produktion, verschleiert ...

  • Ich möchte es Projekt zu berücksichtigen Verfolgung. Erklärt: Wenn ich ein Shared-Library-Projekt mit SWIG und ein anderes C# -Projekt habe, das diesen SWIG-Wrapping lädt, würde das Erstellen dieser Lösung/Umgebung/Arbeitsbereich das Kopieren der resultierenden Shared Library und das Kopieren anderer Shared Libraries, die diese Shared Library verwendet, notwendig machen Verzeichnis, und die C# erzeugen Wrapper auf den C# -Projekt, und dann das C# Projekt

  • Nice-to-have bauen: Einsatz auf anderen Maschinen für die Netzwerk-Test

  • Nice-to-have: I don‘ t interessiert wirklich für IDE Projektdateierzeugung (zB wie CMake für Visual Studio tut), weil sich IDEs Versionen und kompatibel ändern, und es gibt eine Tonne von netten IDEs draußen (z. B.für C/C++ CodeBlocks, CodeLite, Eclipse CDT - all diese sind portabel auf Thumb-Laufwerk, VS ist nicht), aber Nice-to-have wäre Makefile-Integration - ein Makefile, das einfach das Makefile/Skript dieses Build-Tool nennt - gesehen etwas ähnliches für Scons

Blick über das, was ich geschrieben habe ich glaube ich zu viel :) gefragt, aber ich denke, das ist mehr dienen wird dann mir

edit: vergessen zu sagen, aber ich denke, es ist implizierte von der Verwendung von Python: Ich möchte das Werkzeug plattformübergreifend sein

edit: vielleicht was ich suche ist noch nicht implementiert, aber es kann eine Waf-Extens verlassen Ion zu all dem, oder Scons vielleicht

+0

+1 Schöne Frage, war genau das gleiche gesucht! – helpermethod

+0

Was ist die Frage? Wenn jemand von einem solchen Build-Tool weiß, unterstützt das alle benötigten Funktionen, aber es könnte klarer gemacht werden. – unwind

+0

@unwind: Sie haben einen Punkt gemacht, ich erkläre mich ziemlich hart, aber spezifisch –

Antwort

2

Ich habe Scons und es ist gut und Sie können wirklich alles damit zu tun, weil nur Python-Code, so was fehlt Sie in Python schreiben - es ist einfach.

Einige sagen, es hat ein Problem mit sehr großen Projekten, ich hatte keine sehr großen Projekte, um es zu betreiben, also weiß ich nicht.

+0

verwendet werden kann das einzige, was ich als Nachteil für Scons fand und waf war, dass sie einen so genannten Standard-Compiler haben, die Auswahl scheint nett von einer versteckten Option –

+0

und eine andere Sache, die beide schlecht tun, wenn Sie mich fragen, ist Build-Konfigurationen (wie ich sagte, über den Punkt des Debuggen und Freigeben Weitergabe) –

Verwandte Themen