Gute Dateibibliotheken in C++?



  • TomTim schrieb:

    Einfache Frage dazu: bis auf die Headerdateien von Boost braucht mich nichts zu interessieren? Der gesamte Quellcode ist bereits in den *.hpp-Dateien, ich muss nur noch einbinden und vielleicht noch zusätzliche Verzeichnisse angeben, in dem der Compiler nach Headerdateien (für Boost) suchen soll

    Nö, du musst boost::filesystem noch kompilieren, weil es eine der wenigen boost-Bibliotheken ist, die nicht header-only sind.



  • TomTim schrieb:

    Einfache Frage dazu: bis auf die Headerdateien von Boost braucht mich nichts zu interessieren?

    boost::filesystem ist nicht header-only. Hier mußt du eine lib bauen. Dazu nimmt man normalerweis eben bjam.



  • TomTim schrieb:

    2. Ist Boost mehr als eine Bibliothek für Datei- und Verzeichniszugriff? Habe so das Gefühl ... 😉

    boost ist sogar viel mehr.
    http://www.boost.org/doc/libs/

    boost ist aber so nützlich und wichtig, dass man das einfach hat (außer Leute, die damit aus irgendeinem Grunde nicht klar kommen).



  • Michael E. schrieb:

    Nö, du musst boost::filesystem noch kompilieren, weil es eine der wenigen boost-Bibliotheken ist, die nicht header-only sind.

    Moment. Ich muss also boost::filesystem erst noch kompilieren? Aber wie, ich meine ...

    Wenn boost::filesystem nicht header-only ist, heißt das, dass noch irgendwo in boost der Quellcode zu finden ist (ich vermute, die Entwickler werden sich was dabei gedacht haben, als sie Deklaration und Definition getrennt haben). Wenn ich boost::filesystem also in eine DLL verpacken will (brauche ich nun mal, das mache ich mit jeder externen Bibliothek für mein Projekt), muss ich gar nicht viel umschreiben, weil boost::filesystem die Deklaration bereits im Header hat, und wenn ich die DLL habe, brauche ich die C++-Datei gar nicht mehr.

    Aber wo finde ich die entsprechende Datei?

    brotbernd schrieb:

    boost ist sogar viel mehr.
    http://www.boost.org/doc/libs/

    boost ist aber so nützlich und wichtig, dass man das einfach hat (außer Leute, die damit aus irgendeinem Grunde nicht klar kommen).

    1. Hab' ich's mir doch gedacht. :p
    2. Hab' ein bisschen Mitleid mit mir, ich versuche es ja. 😉



  • TomTim schrieb:

    ...und wenn ich die DLL habe, brauche ich die C++-Datei gar nicht mehr.

    Je nach dem wie man die DLL aufbaut, brauch man die Header sehr wohl.



  • asc schrieb:

    Je nach dem wie man die DLL aufbaut, brauch man die Header sehr wohl.

    Na gut, aber wo ist der Quellcode?



  • Benutzt du Visual Studio, dann guckst du hier
    http://www.boostpro.com/download/

    Da kannst du auch nur filesystem anklickern.
    Wenn das fertig ist, hast du im Zielverzeichnis einen Ordner boost, der die header enthält. Das Zielverzeichnis der Installation gibts du im VS als include Verzeichnis an. Im Ordner lib befinden sich .libs und .dlls. Die libs werden im VS aber auch automatisch gelinkt, musste also goar nix machen.

    Für andere Compiler guckst du auf die schon mehrmals genannte Getting Startet Seite.



  • Mich hat Boost ( für Windows ) am Anfang auch genervt, zumal ich kein VS2008 hatte und alles manuell mit bjam machen musste... ( boostpro gab es damals meines Wissens noch nicht ).

    Unter Linux mit Package-Manager war es hingegen Kinderkram 😉

    Aber wenn man es erstmal gebaut hat, lohnt es sich 😉

    Insbesondere:
    - Filesystem
    - Asio
    - sharedpointer
    - Threads

    sind so die sachen, die ich zumindest regelmäßig gebrauchen kann 😉



  • Ich habe mir gestern gedacht, ach ich könnte mir mal wieder eine neuere Version von Boost bauen. Gesagt getan... ich war den ganzen Abend beschäftigt x86 und x64 für msvc10 und msvc09 zu erstellen 😉

    Kann mir einen schöneren Zeitvertreib vorstellen 😃



  • OK, jetzt bin ich völlig verwirrt.

    Ich brauche doch nicht vorkompilierte DLLs und LIBs, ich will boost::filesystem doch nur kompilieren. Ich brauche nur den Header, damit ich den Krull in mein Projekt einbinden kann, und den Quellcode, damit ich die DLL in einem eigenen Projekt erstellen kann.

    Wozu der Unsinn mit bjam und dem Archiv mit den LIBs und DLLs? Ganz offen gefragt, ist das euer Ernst?



  • TomTim schrieb:

    Ganz offen gefragt, ist das euer Ernst?

    Ja.
    Ganz offen gesagt, versuch dich einfach mal aus deiner eigenen Denkweise zu quälen und tu es so, wie es eben richtig gemacht wird. Welchen Compiler hast du denn nun? Mit VC dauert das keine 5 Minuten, das hättest du schon gestern haben können, wenn Du mal einen Rat befolgt hättest.



  • HighLigerBiMBam schrieb:

    Ich habe mir gestern gedacht, ach ich könnte mir mal wieder eine neuere Version von Boost bauen. Gesagt getan... ich war den ganzen Abend beschäftigt x86 und x64 für msvc10 und msvc09 zu erstellen 😉

    Kann mir einen schöneren Zeitvertreib vorstellen 😃

    Deshalb gibts diese doch recht häufig benötigten Konfigurationen bereits fertig gebaut zum runterladen. Geht ratzfatz.
    Wenn du dir was schöneres vorstellen kannst als sowas selber zu bauen solltest du nicht auf den Gedanken kommen es selber zu bauen. 😉



  • brotbernd schrieb:

    TomTim schrieb:

    Ganz offen gefragt, ist das euer Ernst?

    Ja.
    Ganz offen gesagt, versuch dich einfach mal aus deiner eigenen Denkweise zu quälen und tu es so, wie es eben richtig gemacht wird. Welchen Compiler hast du denn nun? Mit VC dauert das keine 5 Minuten, das hättest du schon gestern haben können, wenn Du mal einen Rat befolgt hättest.

    Windows 7, Visual Studio 2008



  • boost::filessystem benötigt das Bauen der libs. Header alleine reichen dort leider nicht.

    pumuckl schrieb:

    HighLigerBiMBam schrieb:

    Ich habe mir gestern gedacht, ach ich könnte mir mal wieder eine neuere Version von Boost bauen. Gesagt getan... ich war den ganzen Abend beschäftigt x86 und x64 für msvc10 und msvc09 zu erstellen 😉

    Kann mir einen schöneren Zeitvertreib vorstellen 😃

    Deshalb gibts diese doch recht häufig benötigten Konfigurationen bereits fertig gebaut zum runterladen. Geht ratzfatz.
    Wenn du dir was schöneres vorstellen kannst als sowas selber zu bauen solltest du nicht auf den Gedanken kommen es selber zu bauen. 😉

    🤡 Ich mache das lieber selbst bevor diese auf meinem System nicht richtig laufen.



  • Also jetzt mal ernsthaft: das Getting Started von Boost.org ist sehr ausführlich und verständlich. Jeder der mehr als Mausschubser ist und weiß wo die Kommandozeile in Windows ist, sollte Boost gebaut bekommen. Die Einrichtung dauert vielleicht für einen bjam-Anfänger max. 10 Min. Spätere Boost-Versionen baut man dann in 1 Minute, weil man schon mal alles eingerichtet hat.

    Wer hier scheitert, sollte sich überlegen, ob er wirklich C++ programmieren will oder überhaupt ernsthaft Programmierer sein will und sich so nennen darf.

    Man muß sich einarbeiten. Vielleicht das Getting Started zwei mal durchlesen. Aber es sind in Wirklichkeit zwei oder drei Aktionen. Der Build von Boost dauert selbst sehr lange, aber da kann man ja Kaffee machen und trinken.

    Und eine LIB oder DLL zu verwenden, ist ja nun wirklich das selbst verständlichste für einen Programmierer.



  • TomTim, was war denn nun genau der Grund, den Installer nicht zu verwenden, den ich übrigens schon vorgestern vorgeschlagen habe? Gerade wenn es einem derart schwer fällt, Boost einzurichten, ist das doch eine angenehme Möglichkeit.



  • Nexus schrieb:

    TomTim, was war denn nun genau der Grund, den Installer nicht zu verwenden, den ich übrigens schon vorgestern vorgeschlagen habe? Gerade wenn es einem derart schwer fällt, Boost einzurichten, ist das doch eine angenehme Möglichkeit.

    Ein Grund, der inzwischen nicht mehr zählt. Vergesst es einfach.

    Artchi schrieb:

    Also jetzt mal ernsthaft: das Getting Started von Boost.org ist sehr ausführlich und verständlich. Jeder der mehr als Mausschubser ist und weiß wo die Kommandozeile in Windows ist, sollte Boost gebaut bekommen. Die Einrichtung dauert vielleicht für einen bjam-Anfänger max. 10 Min. Spätere Boost-Versionen baut man dann in 1 Minute, weil man schon mal alles eingerichtet hat.

    Wer hier scheitert, sollte sich überlegen, ob er wirklich C++ programmieren will oder überhaupt ernsthaft Programmierer sein will und sich so nennen darf.

    Man muß sich einarbeiten. Vielleicht das Getting Started zwei mal durchlesen. Aber es sind in Wirklichkeit zwei oder drei Aktionen. Der Build von Boost dauert selbst sehr lange, aber da kann man ja Kaffee machen und trinken.

    Und eine LIB oder DLL zu verwenden, ist ja nun wirklich das selbst verständlichste für einen Programmierer.

    Tut mir wirklich leid, 🙄 aber ich bin von anderen Bibliotheken anderes gewohnt. Ein solche dämliches Design habe ich selten erlebt, daher ist es kein Wunder, dass ich damit nicht klarkomme.

    Beispielsweise bei der Irrlicht-Engine: dort sind die Includes, seperiert ist der Quellcode, dann gibt es vorerstellte Projekte, mit denen man die Engine erweitern kann, und sogar noch vorkompilierte LIBs und DLLs. Um die Engine zu nutzen, einfach die Includes, LIB und DLL angeben und fertig.

    Aber warum einfach, wenn es auch kompliziert geht? 🙄 Ich bin völlig verwirrt, ich bekomme hier Links, von denen ich nicht weiß, was sie sind. Anfangs bekomme ich bjam, dann endlich ein Archiv, das so aussieht wie Boost, dann erfahre ich, dass man bei Boost::filesystem den Quellcode braucht, da ausgerechnet dieser Namespace NICHT header-only ist, kriege (trotz GettingStarted) NICHT raus, wo dieser ist, bekomme auch den Quellcode nicht raus ... jetzt mal ehrlich, was ist der Sinn eine nicht header-only-Datei, wenn der Quellcode nicht vorhanden ist? 😮 Und NEIN, ich will keine LIB und DLL, ich will den Quellcode - kann ja sein, dass ich diesen editieren muss.

    Und wieso überhaupt bjam? Ich meine, mit Visual Studio 2008 kann ich die Bibliotheken genausogut bauen, nur brauche ich dafür den Quellcode ...



  • boost/libs/filesystem
    Dort befindet sich Dokumentatio, Beispiele, Unit Test, Source und ein jam Buildfile. Wie kann man so blind oder verwirrt sein, das nach 5 Tagen immer noch nicht gefunden zu haben.
    Aber zum x-ten mal: Eigentlich braucht man das überhaupt ncht zuwissen, denn entweder installiert man sich das ganze extrem einfach über den boostpro Installer oder baut sich den Kram mit bjam. Boost ist boost und kein Irrlich oder sonstwas.



  • TomTim schrieb:

    ...

    Schwer zu verstehen Deine Syntax ist.

    Bei boost sind auch Quellen und Header getrennt. Header liegen unter <BOOST_ROOT>/boost und die Quellen unter <BOOST_ROOT>/libs .
    Zum Erstellen der Bibliotheken muss man das Kommando mit zwei bis drei Argumenten eintippen. Wenn man das nicht hinbekommt, sollte man von 3d-Engines vielleicht besser auch die Finger lassen.



  • TomTim schrieb:

    Tut mir wirklich leid, 🙄 aber ich bin von anderen Bibliotheken anderes gewohnt. Ein solche dämliches Design habe ich selten erlebt, daher ist es kein Wunder, dass ich damit nicht klarkomme.

    Ich halte das Design absolut nicht für dämlich. Bedenk bitte auch wie viele verschiedene Compiler und Plattformen unterstützt werden, und wie viele Einstellungen (Singe-/Multithreaded, Debug/Release,...) in die Erzeugung hinein spielen.

    Bei Boost handelt es sich zudem nicht um eine, sondern um sehr viele Bibliotheken, die auch zum Teil in den TR1 und den kommenden Standard eingeflossen sind. Und Boost setzt auch voraus, das mehrere Plattformen unterstützt werden müssen.

    TomTim schrieb:

    Und NEIN, ich will keine LIB und DLL, ich will den Quellcode - kann ja sein, dass ich diesen editieren muss.

    Dann vergiss es, oder beteilige dich bei dem Designprozess der aber mit Reviews abgesegnet werden muss. Boost ist ungeachtet deiner Meinung eine der wichtigsten Bibliothekssammlungen neben der Standardbibliothek (und mit Sicherheit besser durchdacht und geprüft, als es ein Einzelner hinbekommt).

    TomTim schrieb:

    Und wieso überhaupt bjam? Ich meine, mit Visual Studio 2008 kann ich die Bibliotheken genausogut bauen, nur brauche ich dafür den Quellcode ...

    Weil Boost nicht nur für VC ist, sondern für nahezu jeden Compiler mit gewissen Verbreitungsgrad.


Anmelden zum Antworten