2009-05-11 17 views
14

Ich habe eine Menge guter Kommentare über Boost in der Vergangenheit gehört und dachte, ich würde es versuchen. Also habe ich alle benötigten Pakete aus dem Paketmanager in Ubuntu 9.04 heruntergeladen. Jetzt habe ich Probleme herauszufinden, wie man die entkernten Bibliotheken tatsächlich benutzt.Verwendung von Boost auf Ubuntu

Kennt jemand ein gutes Tutorial auf Boost, das den ganzen Weg von Hello World zu Advanced Topics geht, und auch behandelt, wie man Programme mit g ++ auf ubuntu kompiliert?

Antwort

16

vereinbart wurde; the boost website hat zum größten Teil gute Tutorials, aufgeschlüsselt nach Unterbibliotheken.

Wie beim Kompilieren sind gut 80% der Bibliotheksimplementierung in den Header-Dateien definiert, was die Kompilierung trivial macht. zum Beispiel, würden Sie würde nur

#include <boost/shared_ptr.hpp> 

und kompilieren, wie Sie normalerweise addieren, wenn Sie Shared_ptr gebrauchen wollte. Sie müssen Ihrem g ++ - Befehl keine Bibliothekspfade hinzufügen oder -llibboost angeben. Solange sich das Boost-Verzeichnis in Ihrem Include-Pfad befindet, sind Sie fertig.

Von der Boost-Dokumentation:

Die einzigen Bibliotheken, die die folgenden kompiliert und verknüpft werden müssen sind: die nur Boost-Bibliotheken, die getrennt sind gebaut werden müssen:

  • Boost.Filesystem
  • Boost.IOStreams
  • Boost.ProgramOptions
  • Boost.Python (siehe Boost.Python Build tun Dokumenta tion vor dem Bau und der Installation it)
  • Boost.Regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.Thread
  • Boost.Wave

Einige Bibliotheken haben optional separat gebe kompilierte Binärdateien:

  • Boost.DateTime hat eine Binärkomponente, die wird nur benötigt, wenn Sie die Funktionen to_string/from_string oder Serialisierung verwenden oder wenn Sie Visual C++ 6.x oder Borland verwenden.
  • Boost.Graph hat auch eine Binärkomponente, die nur benötigt wird, wenn Sie GraphViz-Dateien parsen wollen.
  • Boost.Test kann im Modus "Nur Header" oder "separat kompiliert" verwendet werden, obwohl eine separate Kompilierung für ernsthafte Verwendung empfohlen wird.

Also, wenn Sie einen der aufgelisteten Bibliotheken verwenden, verwenden Sie die Getting Started guide, na ja, Sie auf Kompilieren und Linken zur Steigerung gestartet.

-1

Die Bibliotheken werden mit Dokumentation geliefert und viele von ihnen haben Tutorials als Teil der Dokumentation. Fange einfach an zu lesen.

+0

Wo sind die Boost-Dateien auf meinem Computer gespeichert. Ich habe sie nicht von der Boost-Website heruntergeladen. – Kredns

+1

können Sie den Speicherort der Dateien mit Ihrem Paketmanager herausfinden. Es ist normalerweise in/usr/include/boost und/usr/lib/libboost_ * –

+0

Aber mit dem Tutorial, dass idown gab mir wird es nicht kompilieren. Kann ich die Backtick-Funktion von g ++ trotzdem benutzen? – Kredns

5

Die Boost-Website hat einige gute Tutorials, sie sind nur eine Art hidden.

-1

Boost ist weder eine Programmiersprache noch ein Anwendungsframework - da es sich nur um eine Sammlung von Bibliotheken handelt, gibt es kein Boost-Programm "Hello World". Die meisten Bibliotheken in Boost können mehr oder weniger unabhängig verwendet werden, und sie variieren in der Größe von einer Funktion bis hin zu massiven Bibliotheken, die für sich alleine stehen können.

Der beste Weg, um Boost kennenzulernen, ist einfach zu versuchen und zu arbeiten, während Sie neuen Code schreiben. Verwenden Sie smart_ptr wann immer Sie können; Verwenden Sie die MPL das nächste Mal, wenn Sie kompilieren möchten. Es gibt eine Menge Abwechslung in Boost, aber Sie sollten sich wahrscheinlich den Utility-Bereich ansehen; Dies sind die leichtesten und am häufigsten verwendeten Bibliotheken.

+0

Grund für die Ablehnung: "Hello World" kann ein erstes, übermäßig einfaches Beispiel bedeuten, das alle Installationen verbindet.Das ursprüngliche "Hello World" C-Programm erfordert, dass man auf den Computer zugreifen, die Programmquelle erstellen, speichern, kompilieren, verknüpfen, ausführen und die Ergebnisse untersuchen kann. –

3

Die Bibliothek Dokumentation ist eine gemischte Tasche. Manche sind gut, aber manche sind eher eine Referenz als ein Leitfaden. Der beste Wegweiser zu (einigen) Boost-Bibliotheken ist das Buch Beyond the C++ Standard Library. Zumindest gibt die Einführung einen Absatz Beschreibungen von vielen der Bibliotheken. Von dort aus können Sie entscheiden, welche Bibliothek für Ihre aktuellen Bedürfnisse am wichtigsten ist, und wenn sie in dem Buch enthalten ist, lesen Sie das Kapitel darüber oder lesen Sie die Dokumentation auf der Website. Wenn Sie deutsch lesen, gibt es eine good online guide. Google Translate funktioniert so gut, dass ein Nicht-Redner wie ich es verstehen kann.

Auch, wenn Sie nicht viel Erfahrung mit C++ haben, würde ich mit den einfacheren Bibliotheken (zB Smart_ptr, Tupel, Konvertierung, Tokenizer, Regex, Datum_Zeit, Test) beginnen, bevor Sie die komplizierteren (Bind, Variante , irgendwelche) oder die wirklich fortgeschrittenen (Konzepte, MPL, Fusion).

3

Mit Easypeasy 1.1 (für Netbooks), das auf Ubuntu basiert, konnte ich den Synaptic Package Manager verwenden, um libboost-dev zu installieren. Dann einfach durch Hinzufügen:

#include "boost/foreach.hpp" 

Ich war in der Lage, die bestehenden Linien in einer bestehenden Anwendung zu ersetzen (was eine Klasse, die nichts mit Auftrieb zu tun hat Fragen hat):

for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii) 
    std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl; 

mit:

BOOST_FOREACH (Ask* ii, ui) 
    std::cout << ii->prompt() << ii->answer() << std::endl; 

Wie ich es verstehe, ist dies ein Header nur Feature. Ich habe noch nichts verwendet, das Änderungen der Verbindungszeit erfordert.

1

Ich habe gerade den deutschen Boost-Guide angeschaut und festgestellt, dass es auch einen english einen gibt (dasselbe Buch). Es sieht sehr gut aus, haben nur die einleitenden Seiten lesen, die

Verwandte Themen