Comment utiliser Boost dans Visual Studio 2010

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

356
demandé sur OlimilOops 2010-04-13 16:23:51

13 réponses

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

si vous utilisez uniquement des en-têtes de bibliothèques, alors tout ce que vous avez à faire est de désactiver le téléchargement boost et de configurer les variables d'environnement. L'instruction ci-dessous définit les variables d'environnement pour Visual Studio seulement, et pas dans l'ensemble du système. Remarque vous n'avez qu'à le faire une fois.

  1. Unarchive la dernière version de boost (1.47.0 au moment de l'écriture) dans un répertoire de votre choix (par exemple C:\boost_1_47_0 ).
  2. crée un nouveau projet vide dans Visual Studio.
  3. ouvrez le gestionnaire immobilier et développez une des configurations pour la plate-forme de votre choix.
  4. sélectionner et clic droit Microsoft.Cpp.<Platform>.user , et sélectionnez Properties pour ouvrir la page de propriété pour éditer.
  5. sélectionnez VC++ Directories à gauche.
  6. éditez la section Include Directories pour inclure le chemin vers vos fichiers source de boost.
  7. répétez les étapes 3 à 6 pour la plateforme de votre choix si nécessaire.

si vous voulez utiliser la partie de boost qui nécessite la construction, mais aucune des caractéristiques qui nécessite les dépendances, puis la construction est assez simple.

  1. Unarchive la dernière version de boost (1.47.0 au moment de l'écriture) dans un répertoire de votre choix (par exemple C:\boost_1_47_0 ).
  2. Lancez L'invite de commande Visual Studio pour la plate-forme de votre choix et naviguez jusqu'à boost.
  3. Run: bootstrap.bat pour construire b2.exe (précédemment nommé bjam).
  4. Exécuter 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

Aller pour une promenade, regarder un film ou 2 / ....

  1. passer par les étapes 2 - 6 de l'ensemble d'instruction ci-dessus pour définir les variables d'environnement.
  2. modifier la section Library Directories pour inclure le chemin vers votre boost sortie des bibliothèques. (La valeur par défaut pour l'exemple et les instructions ci-dessus serait C:\boost_1_47_0\stage\lib . Renommer et déplacer le répertoire en premier si vous voulez avoir x86 & x64 côte à côte (comme <BOOST_PATH>\lib\x86 & <BOOST_PATH>\lib\x64 ).
  3. répétez les étapes 2 à 6 pour la plateforme de votre choix si nécessaire.

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

  • coup de pouce.IOStreams Bzip2 filters
  • coup de pouce.Iostreamszlib filters
  • coup de pouce.MPI
  • coup de pouce.Python
  • coup de pouce.Regex soins intensifs de soutien

coup de pouce.Iostreams Bzip2 filters:

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

coup de pouce.Iostreamszlib filters

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

coup de pouce.MPI

  1. installez une distribution MPI telle que Microsoft Compute Cluster Pack.
  2. suivre les étapes 1 - 3 de la deuxième série d'instructions ci-dessus pour construire boost.
  3. éditer le fichier project-config.jam dans le répertoire <BOOST_PATH> qui résulte de l'exécution bootstrap. Ajouter la ligne using mpi ; (noter l'espace avant le";").
  4. suivre le reste des étapes de la deuxième série d'instructions ci-dessus pour construire boost. Si la détection automatique de L'installation MPI échoue, vous devrez chercher et modifier le fichier de compilation approprié pour rechercher MPI au bon endroit.

coup de pouce.Python

  1. installez une distribution Python telle que ActivePython D'ActiveState. Assurez-vous que L'installation de Python est sur votre chemin.
  2. pour construire complètement la version 32 bits de la bibliothèque nécessite un Python 32 bits, et de même pour la version 64 bits. Si vous avez plusieurs versions installées pour cette raison, vous aurez besoin de dire à b2 où trouver la version et quand les utiliser. Une façon de le faire serait de modifier le fichier project-config.jam dans le répertoire <BOOST_PATH> qui résulte de l'exécution de bootstrap. Ajouter les deux lignes suivantes en ajustant comme approprié pour votre installation Python chemins et versions (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 provoque actuellement L'échec de la construction du MPI. Donc, vous aurez besoin de faire un certain bâtiment séparé avec et sans spécification pour tout construire si vous construisez MPI aussi.

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

coup de pouce.Regex soins intensifs de soutien

  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 exemple C:\icu4c-4_8 ).
  2. ouvrez la Solution Visual Studio dans <ICU_PATH>\source\allinone .
  3. construisez tout pour la configuration de débogage et de publication pour la plate-forme de votre choix. Il peut y avoir un problème construire des versions récentes D'ICU4C avec Visual Studio 2010 lorsque les sorties de debug et de Release build 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 say) et ensuite de reconstruire tout dans la 2ème configuration (par exemple release build).
  4. si vous construisez pour x64, vous devrez exécuter x64 OS car il y a des étapes de post-construction qui impliquent l'exécution d'une partie de l'application 64 bits qu'il construit.
  5. 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.
497
répondu KTC 2017-05-23 10:31:14

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

  • vous n'avez besoin de faire cela que si vous utilisez une des bibliothèques mentionnées dans section 3 de la page d'instructions. (E. g., pour utiliser Boost.Système de fichiers nécessite la compilation.) Si vous n'utilisez aucun de ceux-ci, il suffit de décompresser et de partir.

Construire les bibliothèques 32 bits

installe les fichiers D'en-tête 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 pour les bibliothèques est C:\Boost\lib mais vous voudrez les mettre dans un répertoire i386 si vous prévoyez de construire pour plusieurs architectures.

  1. décompressez Boost dans un nouveau répertoire.
  2. lancez une invite de commande MSVC 32 bits et changez le répertoire où Boost a été décompressé.
  3. Run: bootstrap
  4. Run: 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. ajouter C:\Boost\include\boost-(version) à votre chemin d'inclusion.

  6. ajouter C:\Boost\lib\i386 à votre chemin libs.

Construire le 64 bits des bibliothèques

installe les fichiers D'en-tête 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 pour les bibliothèques est C:\Boost\lib mais vous voudrez les mettre dans un répertoire x64 si vous prévoyez de construire pour plusieurs architectures.

  1. Décompresser Boost dans un nouveau répertoire.
  2. lancez une invite de commande MSVC 64 bits et changez dans le répertoire où Boost a été décompressé.
  3. Run: bootstrap
  4. Run: 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. ajouter C:\Boost\include\boost-(version) à votre chemin d'inclusion.
  6. ajouter C:\Boost\lib\x64 à votre chemin libs.
148
répondu Nate 2018-05-08 15:46:34

vous pouvez aussi essayer-j%NUMBER_OF_PROCESSORS% comme argument il utilisera tous vos noyaux. Ça rend les choses super rapides sur mon cœur de quad.

18
répondu Aaron Stainback 2010-08-18 19:07:16

je pourrais recommander l'astuce suivante: créer un boost.props fichier

  1. Ouvrir le gestionnaire de la propriété
  2. cliquez avec le bouton droit de la souris sur votre noeud de projet et sélectionnez "Ajouter une nouvelle fiche de propriété du projet".
  3. sélectionnez un emplacement et nommez votre feuille de propriétés (par ex. c:\mystuff\boost.accessoires)
  4. Modifier les dossiers supplémentaires Include et Lib au chemin de recherche.

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

  1. ouvrir le gestionnaire immobilier.
  2. cliquez avec le bouton droit de la souris sur le noeud du projet et sélectionnez "Ajouter une feuille de propriété existante".
  3. sélectionnez la feuille de propriétés boost.

EDIT (suivant edit de @jim-fred):

le boost.props fichier ressemble à ceci...

<?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>

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 le fil.php dans le répertoire approprié (dans ce cas, D:\boost_1_53_0\boost\thread.ppr). La " scène\lib\' annuaire peut changer en fonction du répertoire installé.

This stimuler.le fichier props peut être localisé dans le répertoire D:\boost_1_53_0\ .

13
répondu Uri 2013-06-02 07:52:14

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 aussi fonctionner (en C++0x):

#include <memory>

using std::shared_ptr;
13
répondu fredoverflow 2013-09-13 17:52:03

aussi une petite note: si vous voulez réduire le temps de compilation, vous pouvez ajouter le drapeau

- j2

pour exécuter deux constructions parallèles en même temps. Cela peut réduire à la visualisation d'un film ;)

5
répondu GaMer13 2010-05-16 11:33:02

ce fil a été autour d'un moment, et j'ai pensé que je voudrais ajouter quelque chose sur la façon de construire Boost aussi vite que possible sur votre matériel spécifique.

si vous avez une utilisation à 4 ou 6 noyaux-j5 ou-j7 respectivement. Certainement pas le standard build nor-j2 à moins que vous ayez effectivement le double noyau.

je dirige un Sandy Bridge Extreme avec stock clocked 3930K (6-core) sur ma station principale, mais ont un 2600k (4-core) sur l'ancienne boîte de secours, et la tendance est que je reçois le meilleur temps de compilation Boost avec N + 1 processus de construction où N est le nombre de noyaux physiques. N+2 atteint un point de rendements décroissants et les temps montent.

Notes: Hyperthreading is enabled, 32 Go RAM DDR3, Samsung 840 EVO SSD.

- j7 on 6-core (2 minutes et 51 secondes) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 2
Seconds           : 51
Milliseconds      : 128
Ticks             : 1711281830
TotalDays         : 0.0019806502662037
TotalHours        : 0.0475356063888889
TotalMinutes      : 2.85213638333333
TotalSeconds      : 171.128183
TotalMilliseconds : 171128.183

- j6 sur 6-core (3 minutes et 2 secondes) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 2
Milliseconds      : 809
Ticks             : 1828093904
TotalDays         : 0.00211584942592593
TotalHours        : 0.0507803862222222
TotalMinutes      : 3.04682317333333
TotalSeconds      : 182.8093904
TotalMilliseconds : 182809.3904

- j8 on 6-core (3 minutes et 17 secondes) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 17
Milliseconds      : 652
Ticks             : 1976523915
TotalDays         : 0.00228764342013889
TotalHours        : 0.0549034420833333
TotalMinutes      : 3.294206525
TotalSeconds      : 197.6523915
TotalMilliseconds : 197652.3915

-j7 build on 6-core

Config

Building the Boost C++ Libraries.


Performing configuration checks

    - 32-bit                   : yes (cached)
    - arm                      : no  (cached)
    - mips1                    : no  (cached)
    - power                    : no  (cached)
    - sparc                    : no  (cached)
    - x86                      : yes (cached)
    - has_icu builds           : no  (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - zlib                     : no  (cached)
    - iconv (libc)             : no  (cached)
    - iconv (separate)         : no  (cached)
    - icu                      : no  (cached)
    - icu (lib64)              : no  (cached)
    - message-compiler         : yes (cached)
    - compiler-supports-ssse3  : yes (cached)
    - compiler-supports-avx2   : yes (cached)
    - gcc visibility           : no  (cached)
    - long double support      : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
    - zlib                     : no  (cached)

je note que la construction 64 bits prend un peu plus de temps, je dois faire la même comparaison pour ceux-ci et mettre à jour.

5
répondu codenheim 2014-11-06 08:09:46

Voici comment j'ai pu utiliser Boost:

  1. Téléchargez et extrayez la version zip De Boost libraries.
  2. lancer bootstrap.bat fichier, puis exécutez de bjam.EXE.
  3. Attendez environ 30 minutes.
  4. créer un nouveau projet dans Visual Studio.
  5. Aller à projet-->propriétés-->éditeur de liens-->Général-->Bibliothèque Supplémentaire Répertoires et d'ajouter boost/stage/lib répertoire.
  6. Aller à projet-->propriétés-->C/C++-->Général-->Supplémentaires Incluent les Répertoires et d'ajouter boost répertoire.

, Vous serez en mesure de construire votre projet sans erreurs !

4
répondu bhavesh 2013-05-20 11:08:50

télécharger boost à partir: http://www.boost.org/users/download / par exemple par svn

  • Windows -> tortue (la manière la plus simple)

: cmd - > aller au répertoire boost ("D:\boostTrunk" - où vous vérifiez ou téléchargez et extrayez le paquet): commande : bootstrap

nous avons créé bjam.exe in ("D:\boostTrunk") Après que : commande : bjam outils=msvc-10.0 variante=debug,release le filetage=multi lien=statique (Il faudra un certain temps ~20min.)

après ça: Ouvrez Visual studio 2010 -> créer un projet vide -> allez dans les propriétés du projet -> set:

Project properties VS 2010

coller ce code et vérifier s'il fonctionne?

#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/regex.hpp>

using namespace std;

struct Hello 
{
    Hello(){ 
        cout << "Hello constructor" << endl;
    }

    ~Hello(){
        cout << "Hello destructor" << endl;
        cin.get();
    }
};


int main(int argc, char**argv)
{
    //Boost regex, compiled library
    boost::regex regex("^(Hello|Bye) Boost$");
    boost::cmatch helloMatches;
    boost::regex_search("Hello Boost", helloMatches, regex);
    cout << "The word between () is: " << helloMatches[1] << endl;

    //Boost shared pointer, header only library
    boost::shared_ptr<Hello> sharedHello(new Hello);

    return 0;
}

ressources : https://www.youtube.com/watch?v=5AmwIwedTCM

4
répondu andrew 2013-07-21 22:50:33

les installateurs de fenêtres situés ici ont parfaitement fonctionné pour moi. J'ai pris les mesures suivantes:

  1. suivez l'Assistant d'installation jusqu'à la fin.
  2. Exécuter visual studio.
  3. créer un nouveau projet C++
  4. propriétés Ouvertes du projet (peut être trouvé en cliquant sur le nom du projet dans l'Explorateur de solutions)
  5. Sous " C / C++ > General > Additional Include Directories " ajoute le chemin où boost root directory. Par défaut pour ma version était C:\local\boost_1_63_0. Le numéro après "boost" est la version de boost.
  6. dans Project properties, sous" Linker > Additional Library Directories " ajouter le répertoire pour les fichiers de bibliothèque. Par défaut pour ma version était C:\local\boost_1_63_0\lib64-msvc-14.0. Le nombre après "lib" est lié à la cible de construction (32 bits ou 64 bits dans Visual Studio) et le nombre après "msvc" est en rapport avec la version de Visual Studio (14.0 est en rapport avec Visual Studio 2015, mais je l'utilise avec le Visual Studio 2017).

bonne chance!

3
répondu Zoob 2017-02-28 01:32:33

un petit ajout à la réponse principale très informative de KTC:

si vous utilisez la version gratuite Visual Studio C++ 2010 Express, et que vous avez réussi à obtenir celle-ci pour compiler des binaires 64 bits, et que vous voulez maintenant utiliser cette version pour utiliser une version 64 bits des binaires Boost, vous pouvez vous retrouver avec des bibliothèques 32 bits (votre kilométrage peut varier bien sûr, mais sur ma machine c'est le cas triste).

je pourrais corriger ceci en utilisant ce qui suit: entre les étapes décrites ci-dessus as

  1. lancez une invite de commande MSVC 32 bits et changez le répertoire où Boost a été décompressé.
  2. Run: bootstrap

j'ai inséré un appel à "setenv" pour définir l'environnement. Pour une construction de version, les étapes ci-dessus deviennent:

  1. lancez une invite de commande MSVC 32 bits et changez le répertoire où Boost a été décompressé.
  2. Run: "C:\Program Fichiers\Microsoft SDKs\Windows\v7.1 \ Bin\setenv.cmd" /Presse /x64
  3. Run: bootstrap

j'ai trouvé cette info ici: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html

2
répondu ecotax 2012-01-31 13:27:41

un exemple minimaliste pour vous lancer dans Visual Studio:

1. Télécharger et décompressez-le coup de pouce de ici.

2.Créer un projet vide Visual Studio, en utilisant un exemple boost library qui ne nécessite pas de compilation séparée:

#include <iostream>
#include <boost/format.hpp>

using namespace std;  
using namespace boost;  

int main()  
{  
    unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };  

    cout << format("%02X-%02X-%02X-%02X-%02X")  
            % arr[0]  
            % arr[1]  
            % arr[2]  
            % arr[3]  
            % arr[4]  
         << endl;  
}  

3.Dans votre projet Visual Studio propriétés définir les répertoires supplémentaires inclure:

Project Properties

pour un exemple très simple:

comment installer les bibliothèques Boost dans Visual Studio

si vous ne voulez pas utiliser toute la bibliothèque boost, juste un sous-ensemble:

utilisant un sous-ensemble des bibliothèques boost dans Windows

si vous voulez spécifiquement maintenant à propos des bibliothèques qui nécessitent une compilation:

Comment faire utilisez les bibliothèques compilées Boost dans Windows

1
répondu AndyUK 2014-06-12 18:59:03

de plus, il y a quelque chose que je trouve très utile. Utilisez des variables d'environnement pour vos chemins de boost. (Comment définir des variables d'environnement sous windows, lien en bas de 7,8,10) La BOOST_ROOT variable semble être un lieu commun plus et est mis à la racine du chemin d'accès où vous décompressez le coup de pouce.

, Puis dans Propriétés, c++, en général, d'autres Répertoires include utiliser $(BOOST_ROOT) . Puis si/quand vous passez à une nouvelle version de la bibliothèque boost vous pouvez mettre à jour votre variable d'environnement pour pointer vers cette nouvelle version. Comme plus de vos projets, utilisez boost vous n'aurez pas à mettre à jour les 'répertoires supplémentaires D'Inclusions' pour chacun d'eux.

vous pouvez également créer une variable BOOST_LIB et la pointer vers l'endroit où les libs sont mis en scène. De même pour les répertoires supplémentaires des bibliothèques Linker ->, vous n'aurez pas à mettre à jour les projets. J'ai quelques vieux trucs construits avec vs10 et de nouveaux trucs avec vs14 donc construit les deux saveurs de la lib boost à le même dossier. Donc si je déplace un projet de vs10 à vs14 Je n'ai pas à changer les chemins de boost.

NOTE: Si vous changez une variable d'environnement, elle ne fonctionnera pas soudainement dans un projet ouvert VS. VS charge des variables au démarrage. Donc vous devrez fermer VS et le rouvrir.

0
répondu lakeweb 2017-05-15 17:49:13