CMake? SCons?



  • Für meine Windows-Projekte nutze ich MSVC und somit auch dessen Build-System. Bisher habe ich dann bjam-Dateien geschrieben, damit die Projekte z.B. mit anderen Compilern oder anderen Plattformen kompilieren.

    Ich muß aber erkennen, das bjam recht kompliziert und sehr schlecht dokumentiert ist. Weiterhin scheint es dort auch nicht in der Entwicklung weiter zu gehen.

    Kurz gesagt: ich bin von bjam enttäuscht und nicht mehr überzeugt.

    Jetzt habe ich mich mal umgeschaut: selbst Boost scheint neben ihrem eigenen bjam jetzt auch CMake zu nutzen. Andere Projekte nutzen SCons. SCons soll aber laut diverser Berichte bei komplexen Projekten langsam zu sein, also schlecht zu skalieren.

    Hat hier jemand Erfahrung mit CMake und SCons gesammelt?

    Wichtig wäre u.a. für mich, das ich für das selbe Projekt auf unterschiedlichen Plattformen und/oder Compilern auch unterschiedliche Optionen (z.B. andere Libraries) angeben kann.
    Weiterhin muß ich autom. Tests nach dem Build ausführen lassen können. Und falls etwas schief geht, eine Aktion ausführen lassen (z.B. eine E-Mail verschicken).

    Aber auch sonst wären allgemeine Erfahrungsberichte hilfreich.



  • Ich habe einige Buildsysteme probiert, unter anderem eigene Makefile, Autotools, SCons, waf, CMake und ich kann dir nur CMake empfehlen. Es ist sicher nicht das perfekte Buildsystem. Aber es ist das praktikabelste, wenn man mehrere Plattformen unterstützen will. Die Scriptsprache für CMake ist zwar ziemlich beschissen. Aber man bekommt eben doch fast alles mit ihr hin. Da CMake mittlerweile weit verbreitet ist, findet man auch schnell Lösungen zu Problemen bei Google. Da du MSVC benutzt, sollte es dich freuen, dass dir CMake MSVC-Projektdateien generieren kann. CMake hat Support für Tests über CTest eingebaut und mit CDash existiert ein Testing Server.

    SCons ist langsam und frickelig. Mit waf war ich eigentlich auch sehr zufrieden. Waf basiert - wie SCons - auf Python. Aber die Entwicklung war sehr unstabil und ständig ging irgend etwas kaputt. Außerdem war der Windows-Support damals nicht sehr gut. (Für waf hab ich damals sogar den boost support geschrieben.)



  • OK, das die Syntax nicht so gut sein soll, hatte mich auch bei bjam gestört. Aber wenn es so zusagen die einzige Macke ist, kann man damit leben (es gibt ja nichts perfektes).

    Werde dann demnächst CMake nutzen.



  • @Artchi: Nutze CMake nun seit ca. 6 Jahren und kann es nur weiter empfehlen. Eingestiegen bin ich, als bei uns die Notwendigkeit bestand, den Code auf verschiedenen Plattformen (Win, Linux, OS 😵 und mit verschiedenen Compilieren (gcc 3.x-4.x, MSVC, intel) mussten. Nach erfolgreicher Integrierung bei meinem neuen Arbeitgeber, nutzen wir es ausschließlich für MSVC. Kann es also nur weiter empfehlen!


Anmelden zum Antworten