Library-Management bei mehreren Projekten



  • Hi,

    angenommen, ich habe mehrere Projekte, an denen ich mitwirken möchte, beispielsweise welche, die auch bei Github vorkommen.

    Wie löst ihr das Problem der Libraries? Ich finde hier Submodules mit Unterverzeichnissen, bei denen die gesamten LIBs gecloned werden. Schön und gut, das ist ja vom Handling sicherlich auch am einfachsten.

    Aber meine Festplatte läuft dadurch schnell voll. Dann nutzt eine Lib eben eine 3rd-Party-Lib in Version 3 und die andere in Version 3.5. Und zum Kompilieren möchte ich ja auch alles gerne auf meiner SSD haben.

    Wie löst ihr das Problem? Habt ihr einfach eine 1TB SSD dabei und dann ist gut?

    Gruß
    Eike


  • Mod

    Protokollheft
    Datenkompression
    Disketten (was auf eine Diskette passt..)
    Andere Inhaltsaddressierung

    Sprüche wie "weniger ist mehr".

    oder auch: neuen Computer kaufen (Assemblerbibs..)( 🙄 )



  • Was meinst du mit Protokollheft?

    Datenkompression klingt nach Widerspruch ggü. schnellem Kompilieren. Oder wie komprimierst du?

    Disketten, Festplatten oder andere externe Laufwerke sind eben auch zu langsam, machst du das wirklich so? Ich würde meine compile times lieber noch weiter verkürzen.

    Und was meinst du mit Inhaltsadressierung und Assembler-Bibs?

    Sprüche helfen wie üblich nicht.

    Computer, ja, aber daher habe ich ja auch gefragt, ob ihr einfach fette SSDs kauft oder es bessere Mechanismen gibt.



  • An was für riesen Projekte arbeitest du, das du soviel Speicherplatz verballerst?

    Du wirst ja kaum Gigabytes an Sourcecode bearbeiten? Alles was du nicht bearbeitest, solltest du doch dann locker als Binaries vorliegen haben können. Die Binaries sind ja um ein vielfaches kleiner als Sourcen.

    Zur Performance: da wirst du ja auch nicht immer alles bauen, sonder du kompilierst ja nur das was du bearbeitet hast und die Abhängigkeiten. Aber auch das sollte sich ja in Grenzen halten... Compilation-Firewall (Pimpl).

    Bei der Verwaltung der Librarie-Versionen, da gibt es ja heute Tools für. Unter VisualStudio kannst du auch Nuget für C++ benutzen. Und es gibt sowas wie build2.org. Oder halt selber Buch führen. 😉



  • Hi Artchi,

    beispielsweise überlege ich gerade an einem Projekt mitzuwirken, welches QT5.6.2 und eine bestimmte OpenSSL-Version nutzt. Kompiliere ich OpenSSL, hat der Ordner inkl. Debug und Release 873 MB. Da ist natürlich auch das .git -Verzeichnis mit >100MB drin. Der QT-Ordner hat kompiliert 2.69 GB. Zusätzlich nutzt die Software einen Patch für QT, sodass ich nicht die gewöhnliche QT-Version nutzen kann.

    In einem anderen Projekt wird QT5.7.0 ohne Patch genutzt, also muss ich QT zwei mal führen.

    Ich kann jetzt von den geklonten Submodules in Git auch manuell viele Dateien löschen, von denen ich denke, dass sie nicht notwendig wären, aber das müsste ich eben manuell machen und Abhängigkeiten prüfen.

    Ich kenne hier keine Verwaltungstools, die mir das abnehmen. Hilft Nuget bei meinem Problem? Sagen wir mal, ich orientiere mich jetzt speziell an QT, das ist sowieso das größte Problem.



  • Nuget und build2 könnten die zumindest technisch gesehen helfen. Das Problem ist nur, das sie nicht so umfangreiche Repositories haben, weil diese Tools ziemlich neu sind und es kaum Unterstützer gibt.

    Aber mal als Beispiel, für OpenSSL:
    https://www.nuget.org/packages?q=openssl+cpp

    Mann kann über die Konsole oder über die MSVC-GUI die passenden OpenSSL-Versionen in sein Projekt ziehen.

    Da muss erste eine andere Kultur in C++ entstehen. Denn bei Java, Perl, JavaScript u.a. Sprachen ist das Standard. Da muss man nichts manuell machen. Dependency-Script schreiben und ab geht die Post.



  • Und wenn ich jetzt QT5.6.2 und QT5.6.0 lade, erkennt er automatisch, was die beiden gemein haben und speichert nur das Delta ab und verlinkt den Rest?

    Der Bezug ist ja nicht das Problem, sondern der Speicherplatz. Das lösen Package Manager ja nicht generell. Ein globales Verzeichnis für Libs würde das ja auch lösen, ist nur nicht so komfortabel.


Log in to reply