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?
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.
- 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
). - crée un nouveau projet vide dans Visual Studio.
- ouvrez le gestionnaire immobilier et développez une des configurations pour la plate-forme de votre choix.
- sélectionner et clic droit
Microsoft.Cpp.<Platform>.user
, et sélectionnezProperties
pour ouvrir la page de propriété pour éditer. - sélectionnez
VC++ Directories
à gauche. - éditez la section
Include Directories
pour inclure le chemin vers vos fichiers source de boost. - 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.
- 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
). - Lancez L'invite de commande Visual Studio pour la plate-forme de votre choix et naviguez jusqu'à boost.
- Run:
bootstrap.bat
pour construire b2.exe (précédemment nommé bjam). -
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
- Win32:
Aller pour une promenade, regarder un film ou 2 / ....
- passer par les étapes 2 - 6 de l'ensemble d'instruction ci-dessus pour définir les variables d'environnement.
- 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 seraitC:\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
). - 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:
- 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
). - 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
- 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
). - 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
- installez une distribution MPI telle que Microsoft Compute Cluster Pack.
- suivre les étapes 1 - 3 de la deuxième série d'instructions ci-dessus pour construire boost.
- éditer le fichier
project-config.jam
dans le répertoire<BOOST_PATH>
qui résulte de l'exécution bootstrap. Ajouter la ligneusing mpi ;
(noter l'espace avant le";"). - 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
- installez une distribution Python telle que ActivePython D'ActiveState. Assurez-vous que L'installation de Python est sur votre chemin.
-
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.
-
suivez la deuxième série d'instructions ci-dessus pour construire boost.
coup de pouce.Regex soins intensifs de soutien
- 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
). - ouvrez la Solution Visual Studio dans
<ICU_PATH>\source\allinone
. - 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).
- 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.
- supprimez le répertoire source lorsque vous avez terminé.
- 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.
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.
- décompressez Boost dans un nouveau répertoire.
- lancez une invite de commande MSVC 32 bits et changez le répertoire où Boost a été décompressé.
- Run:
bootstrap
-
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
- pour Visual Studio 2012, utilisez
-
ajouter
C:\Boost\include\boost-(version)
à votre chemin d'inclusion. - 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.
- Décompresser Boost dans un nouveau répertoire.
- lancez une invite de commande MSVC 64 bits et changez dans le répertoire où Boost a été décompressé.
- Run:
bootstrap
- 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
- pour Visual Studio 2012, utilisez
- ajouter
C:\Boost\include\boost-(version)
à votre chemin d'inclusion. - ajouter
C:\Boost\lib\x64
à votre chemin libs.
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.
je pourrais recommander l'astuce suivante: créer un boost.props
fichier
- Ouvrir le gestionnaire de la propriété
- 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".
- sélectionnez un emplacement et nommez votre feuille de propriétés (par ex. c:\mystuff\boost.accessoires)
- 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:
- ouvrir le gestionnaire immobilier.
- cliquez avec le bouton droit de la souris sur le noeud du projet et sélectionnez "Ajouter une feuille de propriété existante".
- 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\
.
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;
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 ;)
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
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.
Voici comment j'ai pu utiliser Boost:
- Téléchargez et extrayez la version zip De Boost libraries.
- lancer bootstrap.bat fichier, puis exécutez de bjam.EXE.
- Attendez environ 30 minutes.
- créer un nouveau projet dans Visual Studio.
- 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.
- 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 !
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:
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
les installateurs de fenêtres situés ici ont parfaitement fonctionné pour moi. J'ai pris les mesures suivantes:
- suivez l'Assistant d'installation jusqu'à la fin.
- Exécuter visual studio.
- créer un nouveau projet C++
- propriétés Ouvertes du projet (peut être trouvé en cliquant sur le nom du projet dans l'Explorateur de solutions)
- 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.
- 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!
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
- lancez une invite de commande MSVC 32 bits et changez le répertoire où Boost a été décompressé.
- Run: bootstrap
j'ai inséré un appel à "setenv" pour définir l'environnement. Pour une construction de version, les étapes ci-dessus deviennent:
- lancez une invite de commande MSVC 32 bits et changez le répertoire où Boost a été décompressé.
- Run: "C:\Program Fichiers\Microsoft SDKs\Windows\v7.1 \ Bin\setenv.cmd" /Presse /x64
- Run: 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 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:
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
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.