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?

Bien que la réponse de Nate soit déjà bonne, je vais l’examiner plus précisément pour Visual Studio 2010, comme demandé, et inclure des informations sur la compilation dans les divers composants facultatifs nécessitant des bibliothèques externes.

Si vous utilisez uniquement des bibliothèques d’en-têtes, il vous suffit de désarchiver le téléchargement et de configurer les variables d’environnement. Les instructions ci-dessous définissent 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 fois.

  1. Désarchivez la dernière version de boost (1.47.0 à la date d’écriture) dans un répertoire de votre choix (par exemple, C:\boost_1_47_0 ).
  2. Créez un nouveau projet vide dans Visual Studio.
  3. Ouvrez le gestionnaire de propriétés et développez l’une des configurations de la plate-forme de votre choix.
  4. Cliquez avec le bouton droit de la souris sur Microsoft.Cpp..user et sélectionnez Properties pour ouvrir la page de propriétés pour la modifier.
  5. Sélectionnez VC++ Directories à gauche.
  6. Modifiez la section Include Directories pour inclure le chemin d’access à vos fichiers source boost.
  7. Répétez les étapes 3 à 6 pour la plate-forme de votre choix si nécessaire.

Si vous souhaitez utiliser la partie boost qui nécessite la création, mais aucune des fonctionnalités nécessitant des dépendances externes, la construction est assez simple.

  1. Désarchivez la dernière version de boost (1.47.0 à la date d’écriture) dans un répertoire de votre choix (par exemple, C:\boost_1_47_0 ).
  2. Démarrez l’invite de commande Visual Studio pour la plate-forme de votre choix et accédez à l’emplacement où se trouve le boost.
  3. Exécutez: bootstrap.bat pour comstackr 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

Allez vous promener / regarder un film ou 2 / ….

  1. Suivez les étapes 2 à 6 de l’ensemble d’instructions ci-dessus pour définir les variables d’environnement.
  2. Modifiez la section Library Directories pour inclure le chemin d’access à la sortie de vos bibliothèques de 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 le répertoire en premier si vous voulez avoir côte à côte x86 et x64 (par exemple, \lib\x86 & \lib\x64 ).
  3. Répétez les étapes 2 à 6 pour la plate-forme de votre choix si nécessaire.

Si vous voulez les composants optionnels, alors vous avez encore du travail à faire. Ceux-ci sont:

  • Filtres Boost.IOStreams Bzip2
  • Filtres Zlib Boost.IOStreams
  • Boost.MPI
  • Boost.Python
  • Boost.Regex ICU support

Filtres Boost.IOStreams Bzip2:

  1. Désarchivez la dernière version des fichiers source de la bibliothèque bzip2 (1.0.6) dans un répertoire de votre choix (ex C:\bzip2-1.0.6 ).
  2. Suivez le deuxième ensemble d’instructions ci-dessus pour générer une impulsion, 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 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 exemple, C:\zlib-1.2.5 ).
  2. Suivez le deuxième ensemble d’instructions ci-dessus pour générer une impulsion, 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 dissortingbution MPI telle que Microsoft Compute Cluster Pack.
  2. Suivez les étapes 1 à 3 du deuxième jeu d’instructions ci-dessus pour renforcer l’amélioration.
  3. Editez le fichier project-config.jam dans le répertoire résultant de l’exécution de bootstrap. Ajouter une ligne qui lit en using mpi ; (notez l’espace avant le ‘;’).
  4. Suivez le rest des étapes du deuxième ensemble d’instructions ci-dessus pour créer un coup de pouce. Si la détection automatique de l’installation MPI échoue, vous devrez alors rechercher et modifier le fichier de génération approprié pour rechercher MPI au bon endroit.

Boost.Python

  1. Installez une dissortingbution 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 Python 32 bits et de la même manière pour la version 64 bits. Si vous avez plusieurs versions installées pour une telle raison, vous devrez indiquer à b2 où trouver la version spécifique et à quel moment l’utiliser. Une façon de procéder serait d’éditer le fichier project-config.jam dans le répertoire résultant de l’exécution du bootstrap. Ajoutez les deux lignes suivantes en les ajustant en fonction de vos chemins et versions d’installation Python (notez l’espace avant le ‘;’).

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

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : 64 ;

    Notez que ces spécifications Python explicites entraînent actuellement l’échec de la génération MPI. Vous devrez donc faire des constructions séparées avec et sans spécification pour tout construire si vous construisez également MPI.

  3. Suivez le deuxième ensemble d’instructions ci-dessus pour créer un coup de pouce.

Boost.Regex ICU support

  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 \source\allinone .
  3. Construire tout pour la configuration de débogage et de publication pour la plate-forme de votre choix. Un problème peut survenir lors de la création des versions récentes d’ICU4C avec Visual Studio 2010 lorsque le résultat de la génération du débogage et de la libération se trouve dans le même répertoire (qui est le comportement par défaut). Une solution de contournement possible consiste à faire un Build All (par exemple, un build de débogage), puis à faire une Rebuild tout dans la 2ème configuration (par exemple, une version release).
  4. Si vous construisez pour x64, vous devrez exécuter le système d’exploitation x64 car il y a des étapes de post-construction qui impliquent d’exécuter certaines des applications 64 bits qu’il crée.
  5. Supprimez éventuellement le répertoire source lorsque vous avez terminé.
  6. Suivez le deuxième ensemble d’instructions ci-dessus pour générer une impulsion, mais ajoutez l’option -sICU_PATH="C:\icu4c-4_8" lors de l’exécution de b2 à l’étape 5.

Bien que les instructions sur le site Web de Boost soient utiles, voici une version condensée qui génère également des bibliothèques x64.

  • Vous devez le faire uniquement si vous utilisez l’une des bibliothèques mentionnées dans la section 3 de la page d’instructions. (Par exemple, pour utiliser Boost.Filesystem, une compilation est nécessaire.) Si vous n’utilisez aucun de ces fichiers, décompressez-le et partez.

Construire les bibliothèques 32 bits

Cela 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 des bibliothèques est C:\Boost\lib mais vous devrez les placer sous un répertoire i386 si vous envisagez de créer pour plusieurs architectures.

  1. Décompressez Boost dans un nouveau répertoire.
  2. Démarrez une invite de commande MSVC 32 bits et accédez au répertoire où Boost a été décompressé.
  3. Exécuter: bootstrap
  4. Exécuter: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

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

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

Construire les bibliothèques 64 bits

Cela 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 des bibliothèques est C:\Boost\lib mais vous devrez les placer sous un répertoire x64 si vous envisagez de créer pour plusieurs architectures.

  1. Décompressez Boost dans un nouveau répertoire.
  2. Démarrez une invite de commande MSVC 64 bits et accédez au répertoire dans lequel Boost a été décompressé.
  3. Exécuter: bootstrap
  4. Exécuter: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • Pour Visual Studio 2012, utilisez le toolset=msvc-11.0
    • Pour Visual Studio 2010, utilisez le toolset=msvc-10.0
  5. Ajoutez C:\Boost\include\boost-(version) à votre chemin d’inclusion.
  6. Ajoutez C:\Boost\lib\x64 à votre chemin libs.

Vous pouvez également essayer -j% NUMBER_OF_PROCESSORS% comme argument pour utiliser tous vos cœurs. Rend les choses super rapides sur mon quad core.

Je pourrais recommander l’astuce suivante: Créer un fichier boost.props spécial

  1. Ouvrez le gestionnaire de biens
  2. Cliquez avec le bouton droit sur le nœud de votre projet et sélectionnez «Ajouter une nouvelle feuille de propriétés».
  3. Sélectionnez un emplacement et nommez votre feuille de propriétés (par exemple, c: \ mystuff \ boost.props)
  4. Modifiez les dossiers Include et Lib supplémentaires dans le chemin de recherche.

Cette procédure a la valeur que boost est inclus uniquement dans les projets où vous souhaitez l’inclure explicitement. Lorsque vous avez un nouveau projet qui utilise boost, faites:

  1. Ouvrez le gestionnaire de propriétés.
  2. Cliquez avec le bouton droit 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és boost.

EDIT (édition suivante de @ jim-fred):

Le fichier boost.props résultant ressemble à ceci …

     D:\boost_1_53_0\   $(BOOST_DIR);$(IncludePath) $(BOOST_DIR)stage\lib\;$(LibraryPath)   

Il contient une macro utilisateur pour l’emplacement du répertoire boost (dans ce cas, D: \ boost_1_53_0) et deux autres parameters: IncludePath et LibraryPath. Une instruction #include trouverait thread.hpp dans le répertoire approprié (dans ce cas, D: \ boost_1_53_0 \ boost \ thread.hpp). Le répertoire ‘stage \ lib \’ peut changer selon le répertoire d’installation.

Ce fichier boost.props peut être situé dans le D:\boost_1_53_0\ .

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

 #include  using std::tr1::shared_ptr; 

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

 #include  using std::shared_ptr; 

Aussi une petite note: Si vous voulez réduire le temps de compilation, vous pouvez append le drapeau

-j2

exécuter deux builds parallèles en même temps. Cela pourrait le réduire à regarder un film;)

Ce fil de discussion existe depuis un certain temps et j’ai pensé append quelque chose sur la façon de construire Boost aussi vite que possible sur votre matériel spécifique.

Si vous avez un 4 ou 6 cœurs, utilisez -j5 ou -j7 respectivement. Certainement pas la construction standard ni -j2 à moins que vous ayez en effet un double cœur.

J’exécute un Sandy Bridge Extreme avec un stock de 3930K (6 cœurs) sur ma station principale, mais j’ai une boîte de sauvegarde de 2600k (4 cœurs) sur l’ancienne, et la tendance est que j’obtiens les meilleurs temps de compilation avec N + 1 processus de construction où N est le nombre de cœurs physiques. N + 2 atteint un sharepoint rendement décroissant et les temps montent.

Remarques: Hyperthreading est activé, 32 Go de RAM DDR3, Samsung 840 EVO SSD.

-j7 sur 6 cœurs (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 cœurs (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 sur 6 cœurs (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 construire sur 6 coeurs

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-comstackr : yes (cached) - comstackr-supports-ssse3 : yes (cached) - comstackr-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 version 64 bits prend un peu plus de temps, je dois faire la même comparaison pour ceux-ci et mettre à jour.

Voici comment j’ai pu utiliser Boost:

  1. Téléchargez et extrayez la version zip des bibliothèques Boost.
  2. Exécutez le fichier bootstrap.bat, puis exécutez bjam.exe.
  3. Attendez environ 30 minutes environ.
  4. Créez un nouveau projet dans Visual Studio.
  5. Allez dans le projet -> propriétés -> l’éditeur de liens -> général -> répertoires de bibliothèque supplémentaires et ajoutez-y le répertoire boost / stage / lib .
  6. Allez dans le projet -> propriétés -> C / C ++ -> Général -> Répertoires d’inclusion supplémentaires et ajoutez-y un répertoire de boost .

Vous pourrez construire votre projet sans aucune erreur!

Téléchargez boost à partir de: http://www.boost.org/users/download/ par exemple par svn

  • Windows -> tortue (le plus simple)

Après cela: cmd -> allez dans le répertoire boost (“D: \ boostTrunk” – où vous extrayez ou téléchargez et extrayez le paquet): commande: bootstrap

Nous avons créé bjam.exe dans (“D: \ boostTrunk”) Après cela: commande: bjam toolset = msvc-10.0 variant = debug, relâchez threading = multi link = static (cela prendra du temps ~ 20min.)

Après cela: Ouvrez Visual Studio 2010 -> créez un projet vide -> allez dans les propriétés du projet -> définissez:

Propriétés du projet VS 2010

Collez ce code et vérifiez s’il fonctionne?

 #include  #include  #include  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 sharedHello(new Hello); return 0; } 

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

Les installateurs Windows 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écutez le studio visuel.
  3. Créer un nouveau projet C ++
  4. Ouvrir les propriétés du projet (accessible en cliquant avec le bouton droit sur le nom du projet dans l’explorateur de solutions)
  5. Sous “C / C ++> Général> Répertoires d’inclusion supplémentaires”, ajoutez le chemin d’access au répertoire racine. La valeur par défaut pour ma version était C: \ local \ boost_1_63_0. Le nombre après “boost” est la version de boost.
  6. Dans les propriétés du projet, sous “Linker> Additional Library Directories”, ajoutez le répertoire des fichiers de bibliothèque. La valeur 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 génération (32 bits ou 64 bits dans Visual Studio) et le nombre après “msvc” est lié à la version de Visual Studio (14.0 est lié à Visual Studio 2015, mais je suis l’utiliser avec le Visual Studio 2017).

Bonne chance!

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

Si vous utilisez le logiciel gratuit Visual Studio c ++ 2010 Express, et que vous avez réussi à obtenir celui-ci pour comstackr des fichiers binarys de 64 bits, et que vous voulez maintenant l’utiliser pour utiliser une version 64 bits des bibliothèques Boost, vous pouvez vous retrouver avec 32- bibliothèques de bits (votre kilométrage peut varier bien sûr, mais sur ma machine, c’est le cas sortingste).

Je pourrais résoudre ce problème en utilisant ce qui suit: entre les étapes décrites ci-dessus comme

  1. Démarrez une invite de commande MSVC 32 bits et accédez au répertoire où Boost a été décompressé.
  2. Exécuter: bootstrap

J’ai inséré un appel à ‘setenv’ pour définir l’environnement. Pour une version release, les étapes ci-dessus deviennent:

  1. Démarrez une invite de commande MSVC 32 bits et accédez au répertoire où Boost a été décompressé.
  2. Exécutez: “C: \ Program Files \ Kit de développement Microsoft \ Windows \ v7.1 \ Bin \ setenv.cmd” / Release / x64
  3. Exécuter: bootstrap

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

Un exemple minimaliste pour démarrer dans Visual Studio:

1. Téléchargez et décompressez Boost à partir d’ici.

2.Créez un projet vide Visual Studio en utilisant un exemple de bibliothèque boost ne nécessitant pas de compilation séparée:

 #include  #include  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 vos propriétés de projet Visual Studio, définissez les répertoires d'inclusion supplémentaires:

Propriétés du projet

Pour un exemple très simple:

Comment installer les bibliothèques Boost dans Visual Studio

Si vous ne souhaitez pas utiliser l'intégralité de la bibliothèque boost, il suffit d'un sous-ensemble:

Utiliser un sous-ensemble des bibliothèques de boost dans Windows

Si vous voulez spécifiquement maintenant sur les bibliothèques qui nécessitent une compilation:

Comment utiliser les bibliothèques compilées Boost dans Windows

De plus, il y a quelque chose que je trouve très utile. Utilisez des variables d’environnement pour vos chemins d’access. (Comment définir les variables d’environnement dans Windows, lien en bas pour 7,8,10) La variable BOOST_ROOT semble plus commune et est définie sur le chemin racine où vous décompressez boost.

Ensuite, dans Propriétés, c ++, général, Répertoires d’ $(BOOST_ROOT) supplémentaires utilisent $(BOOST_ROOT) . Ensuite, si vous déplacez vers une version plus récente de la bibliothèque boost, vous pouvez mettre à jour votre variable d’environnement pour qu’elle pointe vers cette nouvelle version. Comme plusieurs de vos projets, utilisez Boost, vous ne devrez pas mettre à jour les «Répertoires d’inclusion supplémentaires» pour tous.

Vous pouvez également créer une variable BOOST_LIB et la pointer vers l’endroit où les libs sont placés. De même, pour le Linker-> Additional Library Directories, vous ne devrez pas mettre à jour vos projets. J’ai quelques vieux trucs construits avec vs10 et de nouveaux trucs avec vs14, donc construit les deux versions de la lib boost dans le même dossier. Donc, si je déplace un projet de vs10 à vs14, je n’ai pas besoin de modifier les chemins de boost.

REMARQUE: Si vous modifiez une variable d’environnement, cela ne fonctionnera pas soudainement dans un projet VS ouvert. VS charge les variables au démarrage. Vous devrez donc fermer VS et le rouvrir.