Suche…


Bemerkungen

Was ist Boost?

Boost ist eine große Sammlung kostenloser, qualitativ hochwertiger C ++ - Bibliotheken, die ein breites Themenspektrum abdecken. Sie wird oft als "zweite Standardbibliothek" für C ++ betrachtet, da viele häufige Probleme in C ++ durch die Verwendung von Boost gelöst werden.

Von boost.org :

Boost bietet kostenlose Peer-Review-portable C ++ - Quellbibliotheken.

Wir betonen Bibliotheken, die gut mit der C ++ - Standardbibliothek funktionieren. Boost-Bibliotheken sollen weithin nützlich und für ein breites Anwendungsspektrum einsetzbar sein. Die Boost-Lizenz ermöglicht sowohl die kommerzielle als auch die nicht kommerzielle Nutzung.

Einige Boost-Bibliotheken haben sogar ihren Weg in die C ++ 11-Standardbibliothek gefunden, und andere, wie Boost.Optional und Boost.Variant , werden in C ++ 17 integriert.

Was kann Boost tun?

Boost deckt die meisten Ecken der Programmierung ab. Aus dem Boost-Tag-Wiki hier auf Stack Overflow:

Es enthält Bibliotheken für:

  • String- und Textverarbeitung
  • Behälter
  • Iteratoren
  • Algorithmen
  • Funktionsobjekte und übergeordnete Programmierung
  • Generische Programmierung
  • Metaprogrammierung von Vorlagen
  • Präprozessor-Metaprogrammierung
  • Gleichzeitige Programmierung
  • Mathematik und Numerik
  • Korrektheit und Prüfung
  • Datenstrukturen
  • Bildverarbeitung
  • Input-Output
  • Sprachübergreifende Unterstützung
  • Erinnerung
  • Parsing
  • Schnittstellen programmieren
  • Verschiedenes
  • Fehlerhafte Compiler-Workarounds

Versionen

Ausführung Neue Bibliotheken Versionshinweise Veröffentlichungsdatum
1.10.0 Anmerkungen 1999-12-14
1.11.0 Rationale Zahl Anmerkungen 2000-02-01
1.12.0 Anmerkungen 2000-02-23
1.13.0 Dienstprogramm, Typmerkmale, Anrufmerkmale, Komprimiertes Paar Anmerkungen 2000-02-29
1.14.0 Anmerkungen 2000-03-05
1.15.0 Zufallszahl Anmerkungen 2000-06-17
1.16.0 Funktioneller Iterator-Header Anmerkungen 2000-06-28
1.17.0 Array Anmerkungen 2000-08-03
1.18.0 Graph, regulärer Ausdruck Anmerkungen 2000-09-28
1.19.0 Concept Check, Python, Static Assert,
Property Map-Konzepte
Anmerkungen 2000-12-10
1,20,0 Umwandlung Anmerkungen 2001-01-06
1.21.0 Iteratoradapter, Pool, Test Anmerkungen 2001-03-09
1.22.0 CRC Anmerkungen 2001-05-25
1,23,0 Any, Funktion, Tokenizer,
Sonderfunktionen, Oktonionen, Quaternionen
Anmerkungen 2001-07-06
1.24.0 Tupel Anmerkungen 2001-08-19
1,25,0 Faden, binden Anmerkungen 2001-10-01
1.26.0 Common Factor, Präprozessor Anmerkungen 2001-11-30
1,27,0 Anmerkungen 2002-02-05
1,28,0 Lambda, I / O State Saver Anmerkungen 2002-05-15
1,29,0 Datum-Uhrzeit, dynamisches Bitset, Format Anmerkungen 2002-10-10
1,30,0 Dateisystem, optional, Intervall, MPL, Spirit Anmerkungen 2003-03-19
1,31,0 enable_if, Variante Anmerkungen 2004-01-26
1,32,0 Zuordnung, Minmax, Multi-Index,
Numerische Konvertierung, Programmoptionen, Bereich,
Serialisierung, String, Tribool
Anmerkungen 2004-11-19
1,33,0 Iostream, Hash, Parameter,
Zeigercontainer, Wave
Anmerkungen 2005-08-11
1,34,0 Foreach, Statechart, TR1, Typeof, Xpressive Anmerkungen 2007-05-12
1,35,0 Asio, Bimap, Kreispuffer, Funktionstypen,
Fusion, GIL, Interprozess, Aufdringlich,
Mathematik / Sonderfunktionen,
Mathematische / statistische Verteilungen, MPI, System
Anmerkungen 2008-03-29
1,36,0 Akkus, Ausnahme, Einheiten, ungeordnet Anmerkungen 2008-08-14
1,37,0 Proto Anmerkungen 2008-11-03
1,38,0 Fliegengewicht, ScopeExit, Swap Anmerkungen 2009-02-08
1.39.0 Signale2 Anmerkungen 2009-05-02
1,40,0 Anmerkungen 2009-08-27
1.41.0 Eigenschaftsbaum Anmerkungen 2009-11-17
1.42.0 Uuid Anmerkungen 2010-02-02
1.43.0 Funktional / Faktor, Funktional / Vorwärts Anmerkungen 2010-05-06
1,44,0 Meta State Machine, Polygon Anmerkungen 2010-08-13
1,45,0 Anmerkungen 2010-11-19
1,46,0 Icl Anmerkungen 2011-02-21
1.46.1 Anmerkungen 2011-03-12
1,47,0 Chrono, Geometrie, Phönix, Verhältnis Anmerkungen 2011-07-11
1,48,0 Container, Gebietsschema, Verschieben Anmerkungen 2011-11-15
1,49,0 Haufen Anmerkungen 2012-02-24
1,50,0 Algorithmus, Functional / OverloadedFunction,
LocalFunction, Dienstprogramm / IdentityType
Anmerkungen 2012-06-28
1.51.0 Kontext Anmerkungen 2012-08-20
1.52.0 Anmerkungen 2012-11-05
1,53,0 Atomic, Coroutine, Lockfree, Multiprecision,
Odeint
Anmerkungen 2013-02-04
1.54.0 Protokoll, TTI, Typlöschung Anmerkungen 2013-07-01
1,55,0 Predef Anmerkungen 2013-11-11
1.56.0 Ausrichten, typeIndex Anmerkungen 2014-08-07
1,57,0 Anmerkungen 2014-11-03
1,58,0 Endian, Sort Anmerkungen 2015-04-17
1,59,0 Konvertieren Sie Coroutine2 Anmerkungen 2015-08-13
1,60,0 VMD Anmerkungen 2015-12-17
1.61.0 Berechnen, DLL, Hana, Metaparse Anmerkungen 2016-05-13
1.62.0 Faser, QVM Anmerkungen 2016-09-28
1,63,0 Anmerkungen 2016-12-26
1,64,0 Verarbeiten Anmerkungen 2017-04-19

Installation oder Setup

Siehe Boost-Erste Schritte .

Die meisten Boost-Bibliotheken sind nur Header, was bedeutet, dass Sie nichts kompilieren oder verknüpfen müssen.

Stellen Sie sicher, dass Sie die neueste Version von Boost erhalten:

  1. Besuchen Sie www.boost.org
  2. Suchen Sie nach dem Download der aktuellen Version. Derzeit ist dies hier verlinkt. Zeigt an, wo Sie auf der Boost-Website Boost herunterladen können
  3. Wählen Sie die entsprechende Archivdatei für Ihr Betriebssystem aus und laden Sie sie herunter.

Nur-Header-Bibliotheken können dann verwendet werden, indem einfach die entsprechenden Header-Dateien eingefügt werden.

Einige Boost-Bibliotheken müssen kompiliert werden:

  • Boost.Chrono
  • Boost.Context
  • Boost.Filesystem
  • Boost.GraphParallel
  • Boost.IOStreams
  • Boost.Locale
  • Boost.MPI
  • Boost.ProgramOptions
  • Boost.Python
  • Boost.Regex
  • Boost.Serialisierung
  • Boost.Signale
  • Boost.System
  • Boost.Thread
  • Boost.Timer
  • Boost.Wave

Die folgenden Bibliotheken haben auch Komponenten, die kompiliert werden müssen:

  • Boost.DateTime

  • Boost.Graph

  • Boost.Math

  • Boost.Random

  • Boost.Test

  • Boost.Exception

Die Quelle für Boost kann über den Download-Link auf der Website abgerufen werden , der auf seine SourceForge-Seite für die neueste Version ( 1.61.0 ab Juli 2016) verweist . Dies kann in ein Verzeichnis (z. B. C: \ local \ boost_1_61_0) entpackt (oder nicht tariert usw.) werden. Dieses Verzeichnis kann dann zum Include-Pfad für die von Ihnen erstellte Software hinzugefügt werden. Danach können Sie Boost-Header in C ++ - Dateien mit #include <boost/header/path.hpp> .

Die Mehrzahl der Bibliotheken in Boost ist nur Header. Wenn Sie nur diese benötigen, reicht die obige Quelldistribution aus. Wenn Sie jedoch eine der Bibliotheken verwenden müssen, für die eine kompilierte Binärdatei erstellt werden muss, benötigen Sie dies ebenfalls.

Bei jedem System ist der zuverlässigste Weg, die korrekten Binärdateien zu erhalten, die eigene Erstellung. Diese Anweisungen sind für Windows oder Linux / Unix / POSIX etwas anders.

Unter Windows mit Visual Studio können Sie die Bibliotheken selbst erstellen, indem Sie vorgefertigte Bibliotheken von der SourceForge-Seite von Boost ( 1.61.0, Stand Juli 2016) herunterladen. Auf dieser Seite können Sie ein Installationsprogramm auswählen, das eine Version für einen bestimmten Visual Studio-Build oder die 7-zip-Datei (boost_X_XX_X-bin-all-32-64.7z) installiert, die die Binärdateien für alle unterstützten Visual Studio-Versionen enthält. Jede dieser Optionen umfasst die Quelle / Kopfzeilen sowie die Binärdateien, sodass die oben angegebene Quelldistribution nicht heruntergeladen werden muss. Entpacken Sie anschließend / install in ein Verzeichnis (z. B. C: \ local \ boost_1_61_0) und fügen Sie dieses Verzeichnis zu Ihrem Include-Pfad hinzu. Fügen Sie dann das Verzeichnis mit den Binärdateien hinzu, die Ihrer Version von Visual Studio entsprechen (z. B. C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 für 32-Bit-Projekte von Visual Studio 2013) zum Bibliothekspfad.

Boost installieren und ausführen (Cygwin)

(Anfängerstufe; IDE: CLion)

Installieren Sie zunächst Boost über den Cygwin-Spiegel: Öffnen Sie das Installationsexe, suchen Sie nach Boost, installieren Sie die Pakete.


Nachdem der Boost installiert ist, befindet er sich in /usr/include/boost . Hier ist alles. Alle #include Anweisungen sind ein Pfad aus dem Boost-Ordner, z. B. in: #include <boost/archive/text_oarchive.hpp> .


Wenn Sie die Boost-Dateien Ihrer Wahl in Ihre .cpp Dateien aufnehmen, wird Ihr Code immer noch nicht in Ihrer IDE der Wahl kompiliert, bis Sie die Bibliotheken verknüpfen und cmake anweisen, nach dem heruntergeladenen Boost-Code zu suchen .


Um zu erreichen, dass cmake nach Ihrem Boost-Code sucht,

find_package(Boost 1.60.0 COMPONENTS components_you_want)

# for example: 
find_package(Boost 1.60.0 COMPONENTS serialization)

include_directories(${Boost_INCLUDE_DIRS}) dann die Verzeichnisse ein: include_directories(${Boost_INCLUDE_DIRS})

Fügen Sie schließlich Ihre ausführbare Datei hinzu und verknüpfen Sie die Bibliotheken:

add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)

Vermeiden Sie vor dem Starten Ihres Programms einen Fehlerabzug, indem Sie testen, ob ein Boost gefunden wurde, bevor Sie etwas hinzufügen oder Ihren Code ausführen:

if (Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(YourTarget ${SOURCE_FILES})
    target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)        
endif()

Ich enthalten -missing_libs , weil ein Fehler , den Sie in ist ausgeführt, dass einige Boost - Bibliothek oder eine andere möglicherweise nicht in Verbindung gebracht wurden, und Sie müssen es manuell hinzufügen - zum Beispiel den Link ich früher verwiesen.


Alles in allem könnte eine endgültige CMakeLists.txt-Datei ungefähr so ​​aussehen:

cmake_minimum_required(VERSION 3.7)
project(your_project)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(your_project ${SOURCE_FILES})
    target_link_libraries(your_project ${Boost_LIBRARIES})
endif()


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow