Maven-ähnliches Abhängigkeitsmanagement für C ++?
Sagen, ich habe ein C++ - Projekt, das aufgeteilt ist in mehrere Teilprojekte. Das Unterprojekt erzeugen einer DLL, und die verschiedenen teams von Entwicklern arbeiten, die auf jedes Teilprojekt. Wenn ich jetzt bauen wollen, die wichtigsten Projekt, gibt es einen Weg, um zu vermeiden, dass alle Teilprojekte von mir?
Kurz gesagt, ich bin auf der Suche nach etwas, das nicht den dependency-management (d.h. für die Binär-Dateien und Header) in einer ähnlichen Weise wie Maven für Java.
In der Tat, ich habe versucht, Maven, aber das ist ziemlich umständlich, da ich die Pakete erstellen manuell und Recht Häufig, Maven findet, pick-up die neuesten änderungen. Außerdem laufen die Zusammenstellung ist ein bisschen ein hack, da habe ich zu nennen NAnt innerhalb von Maven (ich benutze NAnt-Funktion zum erstellen von Visual Studio-Lösungen direkt).
Irgendwelche Hinweise und Ideen, wie dies zu tun?
InformationsquelleAutor der Frage weberste | 2009-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste Antwort: ich würde vorschlagen, mit CMake. Es ist ein multi-Plattform-file-generator (generiert Visual Studio oder Eclipse CDT-Projekte).
http://www.cmake.org/
Habe ich wirklich gute Erfahrungen mit ihm. Das beste, was ich mag über Sie, war die Fähigkeit, generische Projekt-Struktur. So können Sie generisch sub-Projekten look-up-für unit-tests usw.. ohne änderung das Skript jedes mal.
Haben Sie auch viele Module, wie Sie vor-installiert build-Bibliotheken, die für das Projekt benötigt (wie Boost, QT etc.)
Update: In der Zwischenzeit gab es einige Bemühungen um die Einführung von Paket-management für C++. Einige Projekte, die zu betrachten sich lohnt:
InformationsquelleAutor der Antwort ovanes
Für das dependency-management, gibt es ein neues Projekt (es ist eine startup-Firma), die Umsetzung dieser Art von tool: https://www.biicode.com/ (eine C++ dependency manager). Man könnte hinzufügen, Ihre Abhängigkeiten und es sollte funktionieren.
Derzeit ist der Projekt name ist conan.io, Sie wurden aufgekauft von JFrog.
UPDATE: Das Projekt ist tot... Leider, es scheint, der Start konnte nicht genug bekommen premium-zahlenden Kunden, aber der server scheint funktioniert Prima...
UPDATE2: Es scheint, es ist ein Ersatz Projekt: conan.io (danke @mucaho)
InformationsquelleAutor der Antwort carlos.baez
Empfehle ich die folgenden high-level-build-Systeme:
InformationsquelleAutor der Antwort carlosvin
Wenn Sie nur wollen, dependency management, versuchen Efeu, es integriert sich gut mit Ant (und ich nehme an, NAnt können das gleiche tun, basiert auf dieser blog, die mit aus der Ivy-site).
Gibt es auch Byldan, ein .Net-version von Maven. Weiß nicht, wie gut das funktionieren wird für Sie zwar.
InformationsquelleAutor der Antwort Rich Seller
Make und GCC sind eine große combo für wirklich gute Abhängigkeitsprüfung.
GCC erzeugen kann, die 'machen' Abhängigkeit-Dateien automatisch (-MD-commandline-switch), so dass Sie in der Lage, neu erstellen, alle Quelldateien, die abhängig von einem bestimmten header, zum Beispiel.
Habe ich einige einfache Regeln, die ich cut-n-paste in meine makefiles:
Nun, wenn Ihr Objekt-Dateien deklariert werden sagen, ein OBJ_C und ein OBJ_CPP Liste:
Machen können natürlich verfolgen von Abhängigkeiten mit anderen Projekten und solchen, z.B. den Wiederaufbau einer shared libary, wie notwendig, zu.
Beispielsweise, wenn die anderen teams immer Ihre neuesten DLLs auf einige freigegebene Ordner:
InformationsquelleAutor der Antwort Will
Kürzlich veröffentlicht am: biicode Ein multi-Plattform-tool und hosting-service für Entwickler
Edit:
Biicode ist veraltet
Alternative: Conan.io
InformationsquelleAutor der Antwort Martijn Mellens
Empfehle ich conan, die ich mit diesen Tagen.
Es ist sehr mächtig, um alle abhängigen Bibliotheken und Programme, die in Ihrem Projekt.
InformationsquelleAutor der Antwort Fei Chen
Können Sie erstellen NuGet-Paket für die verwendete Bibliotheken und NuGet für dependency management.
Siehe auch NuGet für C++
InformationsquelleAutor der Antwort KindDragon
Gibt es eine Reihe von tools, sitzen oben auf der SCons, die höhere Ebene der Funktionalität ähnlich der von Autotools, die versuchen, um den Entwicklern das Leben einfacher (z.B. WAF, SNOCS). Leider SCons selbst hat den großen Nachteil - Zusammenstellung mehr Zeit für die großen Projekte.
Kann ich nur empfehlen, ausprobieren SNOCS (das ist ein SCons Umgekehrt) für diejenigen, die für eine einfache dependency-management und die Wahl der Kompilations-Optionen in der "Einzel" Befehl (compiler, der x86/x64, Debug/Release, static/shared-libraries, testen/installieren, Ziele, usw.).
SNOCS auch versucht zu bewältigen die lange kompilationszeit problem durch das speichern der Projekte-Konfiguration-Ausgang im separaten Dateien, die ermöglicht die konsequente baut um die Konfiguration zu überspringen phase zusammen und gehen Sie direkt zu der Bauphase (Letzte Funktion ist im Bau jetzt)
CMake Konfiguration wird langweilig in einem größeren Lösungen, so dass das build-system Instandhaltung nimmt einen Großteil der Zeit der Entwickler. Zum Glück, wie Martijn bereits erwähnt, gibt es biicode die "verwendet CMake zu generieren, die Ihr Projekt zusammen mit seinen Abhängigkeiten".
InformationsquelleAutor der Antwort oleg.blinnikov
Ich empfehlen, die Mutter aller build-dependency-Systeme: stellen.
InformationsquelleAutor der Antwort Martin v. Löwis
Versuchen SCons
SCons ist ein Open-Source-software Konstruktion Werkzeug—das ist eine next-generation build-tool. Denke, von SCons als eine verbesserte cross-Plattform-Ersatz für das klassische Make-Werkzeug mit integrierter Funktionalität ähnlich wie autoconf/automake und compiler-caches wie ccache. In kurzen, SCons ist ein leichter, sicherer und schneller Weg zum erstellen von software.
InformationsquelleAutor der Antwort Buri
Versuchen, scons, werden Sie süchtig werden. Machen, ist veraltet, schwer und teuer zu pflegen.
InformationsquelleAutor der Antwort piotr