Ricerca…


Osservazioni

Cos'è Boost?

Boost è una vasta raccolta di librerie C ++ gratuite di alta qualità che coprono una vasta gamma di argomenti. È spesso considerata una "seconda libreria standard" per C ++, poiché molti problemi comuni in C ++ vengono risolti usando Boost.

Da boost.org :

Boost fornisce librerie di sorgenti C ++ portatili con revisione peer gratuita.

Sottolineiamo librerie che funzionano bene con la libreria standard C ++. Le librerie Boost sono pensate per essere ampiamente utili e utilizzabili in un ampio spettro di applicazioni. La licenza Boost incoraggia l'uso commerciale e non commerciale.

Alcune librerie Boost hanno addirittura fatto la loro strada nella libreria standard C ++ 11, e di alcuni altri, come ad esempio Boost.Optional e Boost.Variant , sarà una parte di C ++ 17.

Cosa può fare Boost?

Boost copre la maggior parte degli angoli di programmazione. Dal wiki del tag boost qui su Stack Overflow:

Include librerie per:

  • Elaborazione di stringhe e testi
  • contenitori
  • iteratori
  • algoritmi
  • Oggetti funzionali e programmazione superiore
  • Programmazione generica
  • Template Metaprogramming
  • Preprocessore Metaprogramming
  • Programmazione simultanea
  • Matematica e numeri
  • Correttezza e test
  • Strutture dati
  • Elaborazione delle immagini
  • Input Output
  • Supporto tra lingue
  • Memoria
  • parsing
  • Interfacce di programmazione
  • miscellaneo
  • Soluzioni alternative del compilatore interrotte

Versioni

Versione Nuove biblioteche Note di rilascio Data di rilascio
1.10.0 gli appunti 1999/12/14
1.11.0 Numero razionale gli appunti 2000/02/01
1.12.0 gli appunti 2000/02/23
1.13.0 Utilità, Tratti di tipo, Tratti di chiamata, Coppia compressa gli appunti 2000/02/29
1.14.0 gli appunti 2000/03/05
1.15.0 Numero casuale gli appunti 2000/06/17
1.16.0 Intestazione funzionale, iteratore gli appunti 2000/06/28
1.17.0 schieramento gli appunti 2000/08/03
1.18.0 Grafico, espressione regolare gli appunti 2000/09/28
1.19.0 Concept Check, Python, Static Assert,
Proprietà Mappa Concetti
gli appunti 2000/12/10
1.20.0 Conversione gli appunti 2001/01/06
1.21.0 Iterator Adapter, Pool, Test gli appunti 2001/03/09
1.22.0 CRC gli appunti 2001/05/25
1.23.0 Any, Function, Tokenizer,
Funzioni speciali, Octonioni, Quaternioni
gli appunti 2001/07/06
1.24.0 tuple gli appunti 2001/08/19
1.25.0 Thread, Bind gli appunti 2001-10-01
1.26.0 Fattore comune, preprocessore gli appunti 2001/11/30
1.27.0 gli appunti 2002/02/05
1.28.0 Lambda, I / O State Saver gli appunti 2002/05/15
1.29.0 Date-Time, Dynamic Bitset, Format gli appunti 2002/10/10
1.30.0 Filesystem, Opzionale, Intervallo, MPL, Spirito gli appunti 2003/03/19
1.31.0 enable_if, Variant gli appunti 2004-01-26
1.32.0 Assegnazione, Minmax, Multi-Index,
Conversione numerica, opzioni di programma, intervallo,
Serializzazione, stringa, Tribool
gli appunti 2004-11-19
1.33.0 Iostream, Hash, Parameter,
Contenitore puntatore, Wave
gli appunti 2005/08/11
1.34.0 Foreach, Statechart, TR1, Typeof, Xpressive gli appunti 2007-05-12
1.35.0 Asio, Bimap, Buffer circolare, Tipi di funzioni,
Fusion, GIL, Interprocess, Intrusive,
Funzioni matematiche / speciali,
Distribuzioni matematiche / statistiche, MPI, sistema
gli appunti 2008-03-29
1.36.0 Accumulatori, Eccezioni, Unità, Non Ordinate gli appunti 2008-08-14
1.37.0 Proto gli appunti 2008-11-03
1.38.0 Flyweight, ScopeExit, Swap gli appunti 2009-02-08
1.39.0 Signals2 gli appunti 2009-05-02
1.40.0 gli appunti 2009-08-27
1.41.0 Albero delle proprietà gli appunti 2009-11-17
1.42.0 uuid gli appunti 2010-02-02
1.43.0 Funzionale / Fattore, Funzionale / Inoltra gli appunti 2010-05-06
1.44.0 Meta State Machine, poligono gli appunti 2010-08-13
1.45.0 gli appunti 2010-11-19
1.46.0 ICL gli appunti 2011-02-21
1.46.1 gli appunti 2011-03-12
1.47.0 Chrono, Geometry, Phoenix, Ratio gli appunti 2011-07-11
1.48.0 Contenitore, Locale, Sposta gli appunti 2011-11-15
1.49.0 Mucchio gli appunti 2012-02-24
1.50.0 Algorithm, Functional / OverloadedFunction,
LocalFunction, Utility / IdentityType
gli appunti 2012-06-28
1.51.0 Contesto gli appunti 2012/08/20
1.52.0 gli appunti 2012/11/05
1.53.0 Atomico, Coroutine, Lockfree, Multiprecision,
Odeint
gli appunti 2013/02/04
1.54.0 Log, TTI, Type Erasure gli appunti 2013/07/01
1.55.0 Predef gli appunti 2013/11/11
1.56.0 Allinea, TypeIndex gli appunti 2014/08/07
1.57.0 gli appunti 2014/11/03
1.58.0 Endian, Ordina gli appunti 2015/04/17
1.59.0 Converti, Coroutine2 gli appunti 2015/08/13
1.60.0 VMD gli appunti 2015/12/17
1.61.0 Calcolo, DLL, Hana, Metaparse gli appunti 2016/05/13
1.62.0 Fibra, QVM gli appunti 2016/09/28
1.63.0 gli appunti 2016/12/26
1.64.0 Processi gli appunti 2017/04/19

Installazione o configurazione

Vedi Boost Guida introduttiva .

La maggior parte delle librerie Boost sono solo di intestazione, il che significa che non c'è nulla da compilare o collegare.

Assicurati di ricevere la versione più recente di Boost:

  1. Visita www.boost.org
  2. Cerca il download della versione corrente. Attualmente, questo link qui . Mostra dove sul sito web di boost puoi scaricare Boost
  3. Seleziona il file di archivio appropriato per il tuo sistema operativo e scarica.

Le librerie di solo intestazioni possono quindi essere utilizzate semplicemente includendo i rispettivi file di intestazione.

Alcune librerie Boost richiedono la compilazione:

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

Inoltre, le seguenti librerie hanno componenti che devono essere compilati:

  • Boost.DateTime

  • Boost.Graph

  • Boost.Math

  • Boost.Random

  • Boost.Test

  • Boost.Exception

La fonte di Boost può essere ottenuta tramite il link di download sul sito , che verrà reindirizzato alla sua pagina SourceForge per l'ultima versione ( 1.61.0 a luglio 2016). Questo può essere decompresso (o un-tared, ecc.) In una directory (come C: \ local \ boost_1_61_0). Questa directory può quindi essere aggiunta al percorso di inclusione per il software che si sta creando. Dopodiché puoi includere le intestazioni Boost nei file C ++ con #include <boost/header/path.hpp> .

La maggior parte delle librerie in Boost sono solo di intestazione. Se ti servono solo questi, la distribuzione di cui sopra è tutto ciò che è necessario. Tuttavia, se è necessario utilizzare una delle librerie che richiede la compilazione di un binario compilato, sarà necessario anche quello.

Su qualsiasi sistema, il modo più affidabile per ottenere i binari corretti è costruirli da soli. Queste istruzioni sono leggermente diverse per Windows o Linux / Unix / POSIX .

Su Windows con Visual Studio, un'alternativa alla creazione delle librerie è di scaricare le librerie predefinite dalla pagina di SourceForge di Boost ( 1.61.0 a luglio 2016). In questa pagina è possibile selezionare un programma di installazione che installerà una versione per una build di Visual Studio specifica o il file 7-zip (boost_X_XX_X-bin-all-32-64.7z) che contiene i file binari per tutte le versioni di Visual Studio supportate. Una di queste opzioni include l'origine / le intestazioni e i binari, quindi non è necessario aver scaricato la distribuzione di origine sopra. Una volta ottenuto, estrai / installa in una directory (come C: \ local \ boost_1_61_0) e aggiungi quella directory al tuo percorso di inclusione, quindi aggiungi la directory contenente i binari che corrispondono alla tua versione di Visual Studio (ad es. C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 per i progetti a 32 bit di Visual Studio 2013) al percorso della libreria.

Installazione ed esecuzione di Boost (Cygwin)

(Livello principianti, IDE: CLion)

Innanzitutto, installa boost dal mirror Cygwin: apri l'install exe, cerca boost, installa i pacchetti.


Dopo l'installazione di boost, si troverà in /usr/include/boost . Questo è dove tutto è. Tutte le istruzioni #include saranno un percorso dalla cartella boost, come in: #include <boost/archive/text_oarchive.hpp> .


Una volta inclusi i file boost di tua scelta nei tuoi file .cpp , il codice non verrà ancora compilato nel tuo IDE preferito fino a quando non colleghi le librerie e dici a cmake di cercare il codice boost scaricato .


Per ottenere cmake per cercare il tuo codice boost,

find_package(Boost 1.60.0 COMPONENTS components_you_want)

# for example: 
find_package(Boost 1.60.0 COMPONENTS serialization)

Quindi, includi le directory: include_directories(${Boost_INCLUDE_DIRS})

Infine, aggiungi il tuo eseguibile e collega le librerie:

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

Prima di iniziare il tuo programma, evita di eseguire un dump degli errori testando se è stato trovato boost prima di includere qualcosa o di eseguire il tuo codice:

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

Ho incluso -missing_libs perché un errore che potresti incontrare è che alcune librerie di boost o altre potrebbero non essere state collegate, e devi aggiungerlo manualmente - per esempio, il link a cui ho fatto riferimento in precedenza.


Tutti insieme, un file CMakeLists.txt finale potrebbe essere simile a qualcosa:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow