Recherche…


Remarques

Qu'est-ce que Boost?

Boost est une vaste collection de bibliothèques C ++ gratuites et de haute qualité couvrant un large éventail de sujets. Il est souvent considéré comme une "deuxième bibliothèque standard" pour C ++, car de nombreux problèmes courants en C ++ sont résolus en utilisant Boost.

De boost.org :

Boost fournit gratuitement des bibliothèques source C ++ portables évaluées par des pairs.

Nous privilégions les bibliothèques qui fonctionnent bien avec la bibliothèque standard C ++. Les bibliothèques Boost sont destinées à être largement utiles et utilisables dans un large éventail d'applications. La licence Boost encourage les utilisations commerciales et non commerciales.

Certaines bibliothèques Boost ont même fait leur entrée dans la bibliothèque standard C ++ 11, et d'autres, comme Boost.Optional et Boost.Variant , feront partie de C ++ 17.

Que peut faire Boost?

Boost couvre la plupart des coins de la programmation. Depuis le wiki de la balise boost sur Stack Overflow:

Il comprend des bibliothèques pour:

  • Traitement de chaîne et de texte
  • Conteneurs
  • Les itérateurs
  • Algorithmes
  • Objets de fonction et programmation d'ordre supérieur
  • Programmation générique
  • Métaprogrammation des modèles
  • Métaprogrammation des préprocesseurs
  • Programmation concurrente
  • Maths et Numériques
  • Exactitude et test
  • Structures de données
  • Traitement d'image
  • Entrée sortie
  • Support inter-langues
  • Mémoire
  • Analyse
  • Interfaces de programmation
  • Divers
  • Solutions de contournement du compilateur brisées

Versions

Version Nouvelles bibliothèques Notes de version Date de sortie
1.10.0 Remarques 1999-12-14
1.11.0 Nombre rationnel Remarques 2000-02-01
1.12.0 Remarques 2000-02-23
1.13.0 Utilitaire, Type Traits, Traits d'appel, Paire compressée Remarques 2000-02-29
1.14.0 Remarques 2000-03-05
1,15.0 Nombre aléatoire Remarques 2000-06-17
1,16,0 En-tête fonctionnel d'itérateur Remarques 2000-06-28
1,17,0 Tableau Remarques 2000-08-03
1,18.0 Graphique, expression régulière Remarques 2000-09-28
1.19.0 Vérification du concept, Python, Static Assert,
Concepts de carte de propriété
Remarques 2000-12-10
1.20.0 Conversion Remarques 2001-01-06
1,21.0 Adaptateur itérateur, pool, test Remarques 2001-03-09
1.22.0 CRC Remarques 2001-05-25
1.23.0 Any, Fonction, Tokenizer,
Fonctions Spéciales, Octonions, Quaternions
Remarques 2001-07-06
1,24.0 Tuple Remarques 2001-08-19
1,25.0 Fil, lier Remarques 2001-10-01
1,26.0 Facteur commun, préprocesseur Remarques 2001-11-30
1,27.0 Remarques 2002-02-05
1,28.0 Lambda, I / O State Saver Remarques 2002-05-15
1,29.0 Date-Time, Dynamic Bitset, Format Remarques 2002-10-10
1,30.0 Système de fichiers, facultatif, intervalle, MPL, esprit Remarques 2003-03-19
1.31.0 enable_if, variante Remarques 2004-01-26
1.32.0 Affectation, Minmax, Multi-Index,
Conversion numérique, options de programme, plage,
Sérialisation, String, Tribool
Remarques 2004-11-19
1,33.0 Iostream, Hash, Parameter,
Conteneur de pointeur, vague
Remarques 2005-08-11
1.34.0 Foreach, Statechart, TR1, Typeof, Xpressive Remarques 2007-05-12
1,35.0 Asio, Bimap, Tampon circulaire, Types de fonctions,
Fusion, GIL, Interprocess, Intrusive,
Fonctions mathématiques / spéciales,
Distributions mathématiques / statistiques, MPI, système
Remarques 2008-03-29
1.36.0 Accumulateurs, exceptions, unités, non ordonnés Remarques 2008-08-14
1.37.0 Proto Remarques 2008-11-03
1.38.0 Poids mouche, ScopeExit, Swap Remarques 2009-02-08
1.39.0 Signaux2 Remarques 2009-05-02
1,40.0 Remarques 2009-08-27
1.41.0 Arbre de propriété Remarques 2009-11-17
1,42.0 Uuid Remarques 2010-02-02
1.43.0 Fonctionnel / Facteur, Fonctionnel / Avance Remarques 2010-05-06
1,44.0 Meta State Machine, polygone Remarques 2010-08-13
1.45.0 Remarques 2010-11-19
1,46.0 Icl Remarques 2011-02-21
1.46.1 Remarques 2011-03-12
1,47.0 Chrono, Géométrie, Phoenix, Ratio Remarques 2011-07-11
1.48.0 Container, Locale, Move Remarques 2011-11-15
1,49.0 Tas Remarques 2012-02-24
1,50.0 Algorithme, Fonction / SurchargeFonction,
LocalFunction, Utility / IdentityType
Remarques 2012-06-28
1,51,0 Le contexte Remarques 2012-08-20
1.52.0 Remarques 2012-11-05
1.53.0 Atomic, Coroutine, Lockfree, Multiprecision,
Odeint
Remarques 2013-02-04
1.54.0 Journal, TTI, Type Effacement Remarques 2013-07-01
1,55,0 Predef Remarques 2013-11-11
1.56.0 Aligner, TypeIndex Remarques 2014-08-07
1,57,0 Remarques 2014-11-03
1,58,0 Endian, Sort Remarques 2015-04-17
1.59.0 Convertir, Coroutine2 Remarques 2015-08-13
1.60.0 VMD Remarques 2015-12-17
1,61.0 Calcul, DLL, Hana, Metaparse Remarques 2016-05-13
1.62.0 Fibre, QVM Remarques 2016-09-28
1.63.0 Remarques 2016-12-26
1.64.0 Processus Remarques 2017-04-19

Installation ou configuration

Voir Boost Getting Started .

La plupart des bibliothèques Boost sont uniquement en-tête, ce qui signifie qu'il n'y a rien à compiler ou à créer.

Assurez-vous d'obtenir la version la plus récente de Boost:

  1. Visitez www.boost.org
  2. Recherchez le téléchargement de la version actuelle. Actuellement, ces liens ici . Montre où sur le site Web de boost vous pouvez télécharger Boost
  3. Sélectionnez le fichier d'archive approprié à votre système d'exploitation et téléchargez-le.

Les bibliothèques en-tête uniquement peuvent alors être utilisées en incluant simplement les fichiers d'en-tête respectifs.

Quelques bibliothèques Boost nécessitent une compilation:

  • 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

En outre, les bibliothèques suivantes ont des composants qui doivent être compilés:

  • Boost.DateTime

  • Boost.Graph

  • Boost.Math

  • Boost.Random

  • Boost.Test

  • Boost.Exception

La source de Boost peut être obtenue via le lien de téléchargement sur le site , qui sera redirigé vers sa page SourceForge pour la dernière version ( 1.61.0 en juillet 2016). Cela peut être décompressé (ou non taré, etc.) dans un répertoire (tel que C: \ local \ boost_1_61_0). Ce répertoire peut ensuite être ajouté au chemin d'inclusion du logiciel que vous créez. Après cela, vous pouvez inclure les en-têtes Boost dans les fichiers C ++ avec #include <boost/header/path.hpp> .

La majorité des bibliothèques dans Boost sont uniquement en-tête. Si vous en avez seulement besoin, la distribution de la source ci-dessus est tout ce dont vous avez besoin. Toutefois, si vous devez utiliser l'une des bibliothèques nécessitant la création d'un fichier binaire compilé, vous en aurez également besoin.

Sur tous les systèmes, le moyen le plus fiable pour obtenir les binaires corrects consiste à les créer vous-même. Ces directions sont quelque peu différentes pour Windows ou Linux / Unix / POSIX .

Sous Windows avec Visual Studio, une alternative à la création des bibliothèques vous-même consiste à télécharger des bibliothèques prédéfinies à partir de la page SourceForge de Boost ( 1.61.0 à compter de juillet 2016). Sur cette page, vous pouvez sélectionner un programme d'installation qui installera une version pour une version Visual Studio spécifique ou le fichier 7-zip (boost_X_XX_X-bin-all-32-64.7z) contenant les fichiers binaires pour toutes les versions Visual Studio prises en charge. Chacune de ces options inclut les en-têtes / sources ainsi que les binaires, il n'est donc pas nécessaire d'avoir téléchargé la distribution source ci-dessus. Une fois que vous l'avez, extrayez / installez dans un répertoire (tel que C: \ local \ boost_1_61_0) et ajoutez ce répertoire à votre chemin d'inclusion, puis ajoutez le répertoire contenant les fichiers binaires correspondant à votre version de Visual Studio (par exemple, C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 pour les projets Visual Studio 2013 32 bits) au chemin de la bibliothèque.

Installation et exécution de Boost (Cygwin)

(Niveau débutant; IDE: CLion)

Tout d'abord, installez boost à partir du miroir Cygwin: ouvrez l'exe installation, recherchez boost, installez les packages.


Après le boost est installé: il sera situé dans /usr/include/boost . C'est où tout est. Toutes les instructions #include seront un chemin du dossier boost, comme dans: #include <boost/archive/text_oarchive.hpp> .


Une fois que vous avez inclus les fichiers boost de votre choix dans vos fichiers .cpp , votre code ne sera toujours pas compilé dans l'IDE de votre choix tant que vous n'aurez pas lié les bibliothèques et demandé à cmake de rechercher votre code boost téléchargé .


Pour que cmake puisse rechercher votre code boost,

find_package(Boost 1.60.0 COMPONENTS components_you_want)

# for example: 
find_package(Boost 1.60.0 COMPONENTS serialization)

Ensuite, incluez les répertoires: include_directories(${Boost_INCLUDE_DIRS})

Enfin, ajoutez votre exécutable et liez les bibliothèques:

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

Avant de démarrer votre programme, évitez un vidage d'erreur en testant si un boost a été détecté avant d'inclure quelque chose ou d'exécuter votre code:

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

J'ai inclus -missing_libs car une erreur que vous pourriez rencontrer est que certaines librairies ou autres peuvent ne pas avoir été liées, et vous devez les ajouter manuellement, par exemple le lien que j'ai référencé précédemment.


Tous ensemble, un fichier CMakeLists.txt final pourrait ressembler à:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow