Welches Buildsystem?
Verfasst: Fr Apr 24, 2009 3:56 pm
Nachdem ich bis jetzt fast ausschließlich mit Make als Buildsystem gemacht habe aber Make leider doch einige Schwächen hat, habe ich mir immer wieder einmal Alternativen angeschaut, bisher aber nicht unbedingt erfolgreich. Jetzt bin ich aber über die Uni an CMake gekommen, und hab mich jetzt etwas damit beschäftigt und muss sagen, dass es mir immer mehr gefällt.
Man kann extrem einfach Projekte erstellen und diese Plattformübergreifend kompilieren. Man trägt in einer simplen Textdatei ein welche Dateien benötigt werden und was daraus erstellt werden soll (statische/dynamische Bibliothek, Executable) und muss dann nur mehr 'cmake' gefolgt von 'make' eingeben und das ist alles. Wenn man zum Beispiel unter Windows CMake ausführt kann man eine Visual Studio Projektdatei erstellen lassen, ohne dabei irgendwas an der zuvor erstellten Builddatei ändern zu müssen. Was mir aber am Besten gefällt ist das testen auf vorhanden Bibliotheken. Wenn ich in meinem Projekt zum Beispiel ein paar Boost Bibliotheken brauche trage ich zb folgendes ein:
Das sagt CMake das ich Boost.Signals und Boost.Thread jeweils mindestens in der Version 1.37.0 benötige. CMake sucht dann automatisch nach den Bibliotheken und stellt dabei auch Suffixe und Prefixe fest (bei Boost zb -mt, -d, ...) und schreibt die Ergebnisse in die Variable 'Boost_LIBRARIES'. Danach brauch ich die gefundenen Bibliotheken nur mehr mit der zweiten Zeile zu meiner Bibliothek 'ole_generator' (kann auch eine ausführbare Datei sein) linken. Sollten Die Bibliotheken nicht gefunden werden, dann wird eine Fehlermeldung ausgegeben, dass die Boostbibliotheken nicht in der erforderlichen Version vorhanden sind. So kann es nicht passieren das man wie bei Make mit Fehlermeldungen wie 'undefined ...' überhäuft wird, wenn eine Abhängigkeit nicht erfüllt ist.
Aus jetziger Sicht scheint mir also CMake sehr großes Potential zu haben. Jetzt würde mich interessieren ob jemand von euch auch mit CMake oder einem anderen Buildsystem (nicht make/autotools) bereits Erfahrungen gemacht hat. Wichtige Punkte sind dabei für mich möglichst einfache Plattformunabhängigkeit und das Suchen von Bibliotheken bzw. Abhängigkeiten.
Man kann extrem einfach Projekte erstellen und diese Plattformübergreifend kompilieren. Man trägt in einer simplen Textdatei ein welche Dateien benötigt werden und was daraus erstellt werden soll (statische/dynamische Bibliothek, Executable) und muss dann nur mehr 'cmake' gefolgt von 'make' eingeben und das ist alles. Wenn man zum Beispiel unter Windows CMake ausführt kann man eine Visual Studio Projektdatei erstellen lassen, ohne dabei irgendwas an der zuvor erstellten Builddatei ändern zu müssen. Was mir aber am Besten gefällt ist das testen auf vorhanden Bibliotheken. Wenn ich in meinem Projekt zum Beispiel ein paar Boost Bibliotheken brauche trage ich zb folgendes ein:
Code: Alles auswählen
find_package( Boost 1.37.0 REQUIRED signals thread )
target_link_libraries(ole_generator ${Boost_LIBRARIES})
Aus jetziger Sicht scheint mir also CMake sehr großes Potential zu haben. Jetzt würde mich interessieren ob jemand von euch auch mit CMake oder einem anderen Buildsystem (nicht make/autotools) bereits Erfahrungen gemacht hat. Wichtige Punkte sind dabei für mich möglichst einfache Plattformunabhängigkeit und das Suchen von Bibliotheken bzw. Abhängigkeiten.