376 votes

Comment utiliser Boost dans Visual Studio 2010

Quelle est une bonne explication étape par étape sur la façon d'utiliser la bibliothèque Boost dans un projet vide dans Visual Studio ?

4 votes

515voto

KTC Points 6022

Alors que Réponse de Nate est déjà assez bon, je vais le développer plus spécifiquement pour Visual Studio 2010 comme demandé, et inclure des informations sur la compilation dans les différents composants optionnels qui nécessitent des bibliothèques externes.

Si vous utilisez uniquement des bibliothèques d'en-têtes, il vous suffit de décompresser le téléchargement de boost et de configurer les variables d'environnement. L'instruction ci-dessous définit les variables d'environnement pour Visual Studio uniquement, et non pour l'ensemble du système. Notez que vous ne devez le faire qu'une seule fois.

  1. Désarchivez la dernière version de boost (1.47.0 au moment de l'écriture) dans un répertoire de votre choix (par ex. C:\boost_1_47_0 ).
  2. Créez un nouveau projet vide dans Visual Studio.
  3. Ouvrez le gestionnaire de biens et développez l'une des configurations de la plate-forme de votre choix.
  4. Sélectionnez et cliquez à droite Microsoft.Cpp.<Platform>.user et sélectionnez Properties pour ouvrir la page des propriétés à modifier.
  5. Sélectionnez VC++ Directories à gauche.
  6. Modifier le Include Directories pour inclure le chemin d'accès à vos fichiers source de boost.
  7. Répétez les étapes 3 à 6 pour une autre plate-forme de votre choix si nécessaire.

Si vous voulez utiliser la partie de boost qui nécessite une construction, mais aucune des fonctionnalités qui nécessitent des dépendances externes, alors la construction est assez simple.

  1. Désarchivez la dernière version de boost (1.47.0 au moment de l'écriture) dans un répertoire de votre choix (par ex. C:\boost_1_47_0 ).
  2. Lancez l'invite de commande Visual Studio pour la plate-forme de votre choix et naviguez jusqu'à l'endroit où se trouve boost.
  3. Cours : bootstrap.bat pour construire b2.exe (précédemment nommé bjam).
  4. Exécution b2 :

    • Win32 : b2 --toolset=msvc-10.0 --build-type=complete stage ;
    • x64 : b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

Faire une promenade / regarder un film ou 2 / ....

  1. Suivez les étapes 2 à 6 de l'ensemble des instructions ci-dessus pour définir les variables d'environnement.
  2. Modifier le Library Directories pour inclure le chemin d'accès à la sortie de vos bibliothèques Boost. (La valeur par défaut pour l'exemple et les instructions ci-dessus serait C:\boost_1_47_0\stage\lib . Renommez et déplacez d'abord le répertoire si vous voulez avoir x86 et x64 côte à côte (comme pour <BOOST_PATH>\lib\x86 & <BOOST_PATH>\lib\x64 ).
  3. Répétez les étapes 2 à 6 pour une autre plate-forme de votre choix si nécessaire.

Si vous voulez les composants optionnels, vous avez plus de travail à faire. Ce sont les suivants :

  • Filtres Bzip2 Boost.IOStreams
  • Filtres Zlib Boost.IOStreams
  • Boost.MPI
  • Boost.Python
  • Support de l'ICU Boost.Regex

Boost.IOStreams Filtres Bzip2 :

  1. Désarchivez les fichiers sources de la dernière version de la bibliothèque bzip2 (1.0.6 au moment de l'écriture) dans un répertoire de votre choix (par ex. C:\bzip2-1.0.6 ).
  2. Suivez la deuxième série d'instructions ci-dessus pour construire boost, mais ajoutez l'option -sBZIP2_SOURCE="C:\bzip2-1.0.6" lors de l'exécution de b2 à l'étape 5.

Filtres Zlib Boost.IOStreams

  1. Désarchivez les fichiers sources de la dernière version de la bibliothèque zlib (1.2.5 au moment de l'écriture) dans un répertoire de votre choix (par ex. C:\zlib-1.2.5 ).
  2. Suivez la deuxième série d'instructions ci-dessus pour construire boost, mais ajoutez l'option -sZLIB_SOURCE="C:\zlib-1.2.5" lors de l'exécution de b2 à l'étape 5.

Boost.MPI

  1. Installez une distribution MPI telle que Microsoft Compute Cluster Pack.
  2. Suivez les étapes 1 à 3 de la deuxième série d'instructions ci-dessus pour construire Boost.
  3. Modifier le fichier project-config.jam dans le répertoire <BOOST_PATH> qui résulte de l'exécution de bootstrap. Ajoutez une ligne qui dit using mpi ; (notez l'espace avant le " ;").
  4. Suivez le reste des étapes de la deuxième série d'instructions ci-dessus pour construire Boost. Si l'auto-détection de l'installation de MPI échoue, vous devrez alors rechercher et modifier le fichier de compilation approprié pour rechercher MPI au bon endroit.

Boost.Python

  1. Installez une distribution Python telle que ActivePython d'ActiveState. Assurez-vous que l'installation de Python est dans votre PATH.

  2. Pour construire complètement la version 32-bits de la bibliothèque, il faut du Python 32-bits, et de même pour la version 64-bits. Si vous avez installé plusieurs versions pour cette raison, vous devrez indiquer à b2 où trouver une version spécifique et quand utiliser laquelle. Une façon de le faire serait d'éditer le fichier project-config.jam dans le répertoire <BOOST_PATH> qui résulte de l'exécution de bootstrap. Ajoutez les deux lignes suivantes en les ajustant en fonction de vos chemins d'installation et versions de Python (notez l'espace avant le ';').

    using python : 2.6 : C:\\Python\\Python26\\python ;

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;

    Notez qu'une telle spécification explicite de Python fait actuellement échouer la construction de MPI. Vous devrez donc faire des constructions séparées avec et sans spécification pour tout construire si vous construisez aussi MPI.

  3. Suivez la deuxième série d'instructions ci-dessus pour construire Boost.

Support de l'ICU Boost.Regex

  1. Désarchivez la dernière version du fichier source de la bibliothèque ICU4C (4.8 au moment de l'écriture) dans un répertoire de votre choix (par ex. C:\icu4c-4_8 ).
  2. Ouvrez la solution Visual Studio dans <ICU_PATH>\source\allinone .
  3. Build All pour la configuration de débogage et de libération pour la plate-forme de votre choix. Il peut y avoir un problème de construire des versions récentes d'ICU4C avec Visual Studio 2010 lorsque la sortie pour le débogage et la construction de la version finale sont dans le même répertoire (ce qui est le comportement par défaut). Une solution possible est de faire un Build All (de debug build disons) et ensuite faire un Rebuild all dans la 2ème configuration (par exemple release build).
  4. Si vous construisez pour x64, vous aurez besoin d'un système d'exploitation x64 car il y a des étapes de post-construction qui impliquent l'exécution de certaines des applications 64 bits qu'il construit.
  5. Optionnellement, supprimez le répertoire source lorsque vous avez terminé.
  6. Suivez la deuxième série d'instructions ci-dessus pour construire boost, mais ajoutez l'option -sICU_PATH="C:\icu4c-4_8" lors de l'exécution de b2 à l'étape 5.

0 votes

@Sorin : pourquoi auriez-vous besoin de changer ça ?

6 votes

Il convient de noter que vous devez choisir Outils > Paramètres > Mode expert pour pouvoir afficher les feuilles de propriétés. Il m'a fallu quelques recherches sur Internet pour le découvrir...

0 votes

@KTC : C'est en fait "Expert Settings", disponible dans le menu Tools > Settings. J'utilise VSC++ 2010 Express Edition et sans activer "Expert Settings" vous ne pouvez pas voir les feuilles de propriétés.

159voto

Nate Points 8984

Alors que le instructions sur le site web de Boost sont utiles, voici une version condensée qui construit également des bibliothèques x64.

  • Vous ne devez effectuer cette opération que si vous utilisez l'une des bibliothèques mentionnées dans la rubrique section 3 de la page d'instructions. (Par exemple, l'utilisation de Boost.Filesystem nécessite une compilation.) Si vous n'utilisez aucun de ces éléments, décompressez et allez-y.

Construire les bibliothèques 32 bits

Ceci installe les fichiers d'en-tête de Boost sous C:\Boost\include\boost-(version) et les bibliothèques 32 bits sous C:\Boost\lib\i386 . Notez que l'emplacement par défaut des bibliothèques est C:\Boost\lib mais vous voudrez les mettre sous une i386 si vous envisagez de construire pour plusieurs architectures.

  1. Dézippez Boost dans un nouveau répertoire.

  2. Lancez une invite de commande MSVC 32 bits et passez dans le répertoire où Boost a été décompressé.

  3. Cours : bootstrap

  4. Cours : b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

    • Pour Visual Studio 2012, utilisez toolset=msvc-11.0
    • Pour Visual Studio 2010, utilisez toolset=msvc-10.0
    • Pour Visual Studio 2017, utilisez toolset=msvc-14.1
  5. Añadir C:\Boost\include\boost-(version) à votre chemin d'inclusion.

  6. Añadir C:\Boost\lib\i386 à votre chemin des librairies.

Construire les bibliothèques 64 bits

Ceci installe les fichiers d'en-tête de Boost sous C:\Boost\include\boost-(version) et les bibliothèques 64 bits sous C:\Boost\lib\x64 . Notez que l'emplacement par défaut des bibliothèques est C:\Boost\lib mais vous voudrez les mettre sous une x64 si vous envisagez de construire pour plusieurs architectures.

  1. Dézippez Boost dans un nouveau répertoire.
  2. Lancez une invite de commande MSVC 64 bits et passez dans le répertoire où Boost a été décompressé.
  3. Cours : bootstrap
  4. Cours : b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • Pour Visual Studio 2012, utilisez toolset=msvc-11.0
    • Pour Visual Studio 2010, utilisez toolset=msvc-10.0
  5. Añadir C:\Boost\include\boost-(version) à votre chemin d'inclusion.
  6. Añadir C:\Boost\lib\x64 à votre chemin des librairies.

28 votes

Si vous ne voulez pas les construire vous-même, vous pouvez installer des binaires pré-construits depuis sourceforge : sourceforge.net/projets/boost/files/boost-binaires Pour chaque version de boost, il existe des installateurs pour chaque version de visual studio (en 32 et 64 bits).

1 votes

Pourquoi utiliser architecture=x86 au lieu de architecture=x64 lors d'une compilation 64 bits ? EDIT : Je viens de le découvrir à la dure :P Vous ne pouvez pas passer en 64...

0 votes

Hey, @teeks99 j'ai visité votre lien donné mais pour la version v1.4.7 j'ai trouvé trop de fichiers, lequel dois-je utiliser de toute façon ? n'est-ce pas mieux s'il y a un seul fichier (bibliothèque / dll) qui convient pour l'utilisation de toutes les fonctions de boost ?

21voto

Aaron Stainback Points 974

Vous pouvez également essayer -j%NUMBER_OF_PROCESSORS% comme argument, il utilisera tous vos cœurs. Cela rend les choses super rapides sur mon quadruple cœur.

3 votes

Ceci multiplié par un million.... c'est ce que j'ai finalement fait comme effort combiné pour VS2015 : b2 -j%NUMBER_OF_PROCESSORS% toolset=msvc-14.0 --build-type=complete --libdir= C:\Boost\lib\x64 architecture=x86 address-model=64 install

0 votes

Pour powershell c'est : -j"$env:NUMBER_OF_PROCESSORS"

15voto

Uri Points 4568

Je pourrais vous recommander l'astuce suivante : Créez un fichier spécial boost.props archivo

  1. Ouvrez le gestionnaire de biens
  2. Cliquez avec le bouton droit de la souris sur le nœud de votre projet et sélectionnez "Add new project property sheet".
  3. Sélectionnez un emplacement et nommez votre feuille de propriété (par exemple c : \mystuff\boost.props )
  4. Modifiez les dossiers supplémentaires Include et Lib dans le chemin de recherche.

Cette procédure a pour valeur que boost est inclus seulement dans les projets où vous voulez explicitement l'inclure. Lorsque vous avez un nouveau projet qui utilise boost, faites :

  1. Ouvrez le gestionnaire de biens.
  2. Cliquez avec le bouton droit de la souris sur le nœud du projet, et sélectionnez "Ajouter une feuille de propriétés existante".
  3. Sélectionnez la feuille de propriété "boost".

EDIT (suite à l'édition de @jim-fred) :

Le résultat boost.props ressemble à quelque chose comme ça...

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
  </PropertyGroup>
  <PropertyGroup>
    <IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
    <LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
</Project>

Il contient une macro utilisateur pour l'emplacement du répertoire boost (dans ce cas, D:\boost_1_53_0 ) et deux autres paramètres : IncludePath et LibraryPath. Une déclaration #include <boost/thread.hpp> trouverait thread.hpp dans le répertoire approprié (dans ce cas, D:\boost_1_53_0\boost\thread.hpp ). Le "stage \lib\ Le répertoire ' peut changer en fonction du répertoire dans lequel il est installé.

Ce fichier boost.props pourrait être situé dans le répertoire D:\boost_1_53_0\ répertoire.

14voto

FredOverflow Points 88201

De quelles parties de Boost avez-vous besoin ? Beaucoup de choses font partie de TR1 qui est livré avec Visual Studio, donc vous pouvez simplement dire, par exemple :

#include <tr1/memory>

using std::tr1::shared_ptr;

Selon James, cela devrait également fonctionner (en C++0x) :

#include <memory>

using std::shared_ptr;

5 votes

Dans VS2010, les bibliothèques TR1 qui font désormais partie de C++0x ont toutes été déplacées dans le dossier de l'utilisateur. std comme ils le sont dans la norme C++0x. (Je pense qu'ils sont probablement dans le std::tr1 également, pour des raisons de compatibilité ascendante).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X