Boost - abspecken



  • Hey 🙂

    Ich würde gerne eine Funktion von Boost nutzen, aber ich möchte nicht die Gesamte bib in meinem Projekt liegen haben.
    Gibt es einen Weg Genau den gebrauchten Teil der Boost Lib zu extrahieren? in einer DLL oder so?

    Gruß,
    Chris



  • Um welche Funktion handelt es sich denn? Eventuell ist diese komplett Header only



  • Ich benötige die funktionen zur Serialisierung.
    Objekte in (binär)streamform bringen und zurück.
    boost/archive/text_oarchive.hpp
    boost/archive/text_iarchive.hpp
    aber die includen am laufendem Band andere hpps.



  • Boost in das eigene Projekt aufzunehmen macht so gar keinen Sinn. Jedes vernünftige Betriebssystem hat so was wie ein Softwarerepository. Je nach Betriebssystem kannst du das mit apt-get oder yum oder einem ähnlichen Tools einfach im System installieren. Es gibt sogar graphische Oberflächen dazu.

    Wenn Du noch so ein Betriebssystem hast, welches keine Software verwalten kann (also wie beispielsweise alle Windows-Varianten), dann empfehle ich Dir ein Upgrade auf ein besseres Betriebssystem.



  • Hä was willst du unreg denn?



  • Skym0sh0 schrieb:

    Hä was willst du unreg denn?

    Ich wollte nur mal trollen. Ich finde es halt schade, dass Windows so weit verbreitet ist. Die Leute haben sich an die großen Schwächen von Windows gewöhnt, bzw. kennen es nicht anders. Ich bin dann einer der Leidtragenden, da vieles unter Linux nicht läuft weil die meisten dieses dämliche Windows verwenden. Es ist aber leider ein Kampf gegen Windmühlen.



  • cl90 schrieb:

    Ich würde gerne eine Funktion von Boost nutzen, aber ich möchte nicht die Gesamte bib in meinem Projekt liegen haben.
    Gibt es einen Weg Genau den gebrauchten Teil der Boost Lib zu extrahieren? in einer DLL oder so?

    bcp sollte da helfen:
    http://www.boost.org/doc/libs/1_55_0/tools/bcp/doc/html/index.html



  • linuxuser2 schrieb:

    Skym0sh0 schrieb:

    Hä was willst du unreg denn?

    Ich wollte nur mal trollen. Ich finde es halt schade, dass Windows so weit verbreitet ist. Die Leute haben sich an die großen Schwächen von Windows gewöhnt, bzw. kennen es nicht anders. Ich bin dann einer der Leidtragenden, da vieles unter Linux nicht läuft weil die meisten dieses dämliche Windows verwenden. Es ist aber leider ein Kampf gegen Windmühlen.

    Ok, ich kann dich verstehen, die Vor- und Nachteile liegen mehr oder weniger auf der Hand. Aber das hat doch nichts wirklich mit Boost zu tun?!

    Da kannst du (und andere) in einem anderen Thread drüber lamentieren.

    Aber, von mir aus ein Sorry, dass ich dich so hart angegangen bin. 🙂



  • Boost ins Projekt aufnehmen sollte deutlich effizienter sein als DLLs. Der Compiler kann dann nämlich alles unnötige wegoptimieren, anstatt alles behalten zu müssen, weil es ja potentiell wichtig sein könnte. Wahrscheinlich hält sich auch die Compilezeit in Grenzen wenn du kein Rebuild machst.

    Ein Hauptargument gegen Linux ist für mich, dass es Softwarerepositories gibt. Ich hasse es, wenn man mir vorschreibt, was ich wie zu installieren habe und sie dann zum Beispiel meinen "Och, die Lizenz von Opera passt uns nicht, tun wir nicht rein". Eine unverschämte Frechheit ist das. Dass Windows jetzt App-Stores auf den Desktop tun will ist ein deutlicher Rückschritt.



  • Man kann auch einen subset von boost installieren, bzw. in sein Projekt aufnehmen.
    -> http://www.boost.org/doc/libs/1_55_0/tools/bcp/doc/html/index.html



  • nwp3 schrieb:

    Ein Hauptargument gegen Linux ist für mich, dass es Softwarerepositories gibt. Ich hasse es, wenn man mir vorschreibt, was ich wie zu installieren habe und sie dann zum Beispiel meinen "Och, die Lizenz von Opera passt uns nicht, tun wir nicht rein". Eine unverschämte Frechheit ist das.

    Tut so viel Unwissenheit weh?



  • Boost ins Projekt aufnehmen sollte deutlich effizienter sein als DLLs. Der Compiler kann dann nämlich alles unnötige wegoptimieren, anstatt alles behalten zu müssen, weil es ja potentiell wichtig sein könnte.

    Naja, die schnittstellen zu den offiziellen headern bleiben vollkommen gleich, egal ob Dll, lib oder cpp ins Project aufgenommen.
    was er wegoptimiert, iss nur vom compiler abhaengig, nich ob das ne lib, dll oder direct eingebunden iss, vorrausgesetzt du wurschtelst die angebundenen cpp dateien nicht an, bzw nutzt eigentlich private funktionen.

    Einziger unnerschied ist, das bei DLL da getrennte uebersetzungseinheiten deren symbole expliziet export werden, die compilereinstellungen schärfer sein könnten, so das er da intern mehr wegoptimieren, aber nur theorethisch.

    @cl90
    wenn du nur header(includes) brauchst, solltest du nicht versuchen deren verzeichnis-struktur aufzubrechen. Es ist einfach nur kontraproduktiv.
    Dafuer gibts für compiler den -I Schalter, wo du zusaetzliche Include verzeichnisse hinzunimmst.
    Bei visual studio findest die graphische Version zum einstellungen unter project, eigenschaften, c++ zusätzliche Include-verzeichnisse.
    Da einfach das main verzeichniss deiner boost install eintragen und schon sollt er alles finden.

    Includes brauch und nimmt der compiler sowieso nur die, die referenziert sind (durch deine cpp's)

    mit Libs siehts etwas anders aus ...
    boost-serialization iss leider nicht header implementiert, du brauchst also noch (binär)code.
    Also musst du die boost für deinen compiler aus den sourcen uebersetzen,
    oder du besorgst dir fuer deinen compiler schon eine fertig uebersetzte Boost.
    Das ist dann die volle version (alle boost module).
    du verwendest aber bei dir nur die lib, die du brauchst, also serialization ... und nur die linkst du. Und nur dernen code bekommst du dann verpasst, alle anderen module gammeln nur auf deiner platte rum, aber nicht in deiner exe.

    Du kannst ueber den namen der libs zum linken noch entscheiden, ob du die statische oder dynamische lib verwendest. bei der statischen wird aller code von serialization an deine exe gepappt, bei der dynamischen nur der stub zur dll . du brauchst aber dann immer auch die dll (auslieferung) zur laufzeit !

    Ciao ...



  • nwp3 schrieb:

    Boost ins Projekt aufnehmen sollte deutlich effizienter sein als DLLs. Der Compiler kann dann nämlich alles unnötige wegoptimieren, anstatt alles behalten zu müssen, weil es ja potentiell wichtig sein könnte. Wahrscheinlich hält sich auch die Compilezeit in Grenzen wenn du kein Rebuild machst.

    Ein Hauptargument gegen Linux ist für mich, dass es Softwarerepositories gibt. Ich hasse es, wenn man mir vorschreibt, was ich wie zu installieren habe und sie dann zum Beispiel meinen "Och, die Lizenz von Opera passt uns nicht, tun wir nicht rein". Eine unverschämte Frechheit ist das. Dass Windows jetzt App-Stores auf den Desktop tun will ist ein deutlicher Rückschritt.

    Oh ja - klasse. Und ich hasse es, wenn jeder Softwarehersteller für sich vorschreibt, wie die Software zu installieren und upzudaten hat. Und dann legt jeder Softwarehersteller seine Dateien da ab, wo es ihn passt und das völlig intransparent und unbeeinflussbar vom Anwender. Wenn eine Datei im Weg ist, wird sie halt überbügelt. Ist ja egal, wenn eine andere Software die Datei in dieser Version brauchen sollte. Eine unverschämte Frechheit ist das.

    Aber wenn Dir das lieber ist, dann sei es so. Das schöne ist ja, dass jeder die Wahl hat.

    Aber ich denke, die Diskussion ist jetzt ein wenig off-topic. Ich entschuldige mich, dass ich mich in diesen Thread gedrängt habe.


Log in to reply