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?
c++
visual-studio-2010
boost
OlimilOops
la source
la source
Réponses:
Bien que la réponse de Nate soit déjà assez bonne, je vais l'étendre plus spécifiquement pour Visual Studio 2010 comme demandé, et inclure des informations sur la compilation dans les divers composants facultatifs qui nécessitent 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 de boost et de configurer les variables d'environnement. Les instructions ci-dessous définissent les variables d'environnement pour Visual Studio uniquement, et non sur l'ensemble du système. Notez que vous ne devez le faire qu'une seule fois.
C:\boost_1_47_0
).Microsoft.Cpp.<Platform>.user
et sélectionnezProperties
pour ouvrir la page de propriétés à modifier.VC++ Directories
à gauche.Include Directories
section pour inclure le chemin d'accès à vos fichiers source de boost.Si vous souhaitez utiliser la partie de boost qui nécessite une construction, mais aucune des fonctionnalités qui nécessite des dépendances externes, la construction est assez simple.
C:\boost_1_47_0
).bootstrap.bat
pour construire b2.exe (précédemment nommé bjam).Exécutez b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Allez vous promener / regarder un film ou 2 / ....
Library Directories
section 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 seraitC:\boost_1_47_0\stage\lib
. Renommez et déplacez d'abord le répertoire si vous voulez avoir côte à côte x86 et x64 (comme pour<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
).Si vous voulez les composants optionnels, vous avez encore du travail à faire. Ceux-ci sont:
Filtres Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
lors de l'exécution de b2 à l'étape 5.Filtres Boost.IOStreams Zlib
C:\zlib-1.2.5
).-sZLIB_SOURCE="C:\zlib-1.2.5"
lors de l'exécution de b2 à l'étape 5.Boost.MPI
project-config.jam
dans le répertoire<BOOST_PATH>
résultant de l'exécution de l'amorçage. Ajoutez une ligne qui litusing mpi ;
(notez l'espace avant le «;»).Boost.Python
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 plusieurs versions sont installées pour cette raison, vous devrez indiquer à b2 où trouver la version spécifique et quand l'utiliser. Une façon de le faire serait d'éditer le fichier
project-config.jam
dans le répertoire<BOOST_PATH>
résultant de l'exécution de l'amorçage. Ajoutez les deux lignes suivantes en 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 que cette spécification Python explicite entraîne actuellement l'échec de la construction MPI. Vous devrez donc faire un bâtiment séparé avec et sans spécification pour tout construire si vous construisez également MPI.
Suivez la deuxième série d'instructions ci-dessus pour créer un boost.
Prise en charge de Boost.Regex ICU
C:\icu4c-4_8
).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
lors de l'exécution de b2 à l'étape 5.la source
Bien que les instructions sur le site Web de Boost soient utiles, voici une version condensée qui crée également des bibliothèques x64.
Construisez 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 sousC:\Boost\lib\i386
. Notez que l'emplacement par défaut des bibliothèques estC:\Boost\lib
mais vous voudrez les placer dans uni386
répertoire si vous prévoyez de construire pour plusieurs architectures.bootstrap
Courir:
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
Ajoutez
C:\Boost\include\boost-(version)
à votre chemin d'inclusion.C:\Boost\lib\i386
à votre chemin d'accès aux bibliothèques.Créer 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 sousC:\Boost\lib\x64
. Notez que l'emplacement par défaut des bibliothèques estC:\Boost\lib
mais vous voudrez les placer dans unx64
répertoire si vous prévoyez de construire pour plusieurs architectures.bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
à votre chemin d'inclusion.C:\Boost\lib\x64
à votre chemin d'accès aux bibliothèques.la source
Vous pouvez également essayer -j% NUMBER_OF_PROCESSORS% comme argument, il utilisera tous vos cœurs. Rend les choses super rapides sur mon quad core.
la source
Je pourrais recommander l'astuce suivante: créer un
boost.props
fichier spécialCette procédure a pour valeur que le boost est inclus uniquement dans les projets où vous souhaitez l'inclure explicitement. Lorsque vous avez un nouveau projet qui utilise boost, procédez comme suit:
EDIT (modification suivante de @ jim-fred):
Le
boost.props
fichier résultant ressemble à ceci ...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 instruction
#include <boost/thread.hpp>
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 en fonction du répertoire installé sur.Ce fichier boost.props pourrait se trouver dans le
D:\boost_1_53_0\
répertoire.la source
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:
Selon James, cela devrait également fonctionner (en C ++ 0x):
la source
std
espace de noms, comme elles le sont dans la norme C ++ 0x. (Je pense qu'ils sont probablement aussi dans l'std::tr1
espace de noms, pour des raisons de compatibilité descendante).Ce fil existe depuis un certain temps, et j'ai pensé ajouter 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 version standard ni -j2 à moins que vous n'ayez en effet un dual core.
J'utilise un Sandy Bridge Extreme avec un stock cadencé à 3930K (6 cœurs) sur ma station principale, mais j'ai un 2600k (4 cœurs) sur une ancienne boîte de sauvegarde, et la tendance est que j'obtiens les meilleurs temps de compilation Boost avec N + 1 processus de construction où N est le nombre de cœurs physiques. N + 2 atteint un point de rendements décroissants et les temps augmentent.
Remarques: L'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)
-j6 sur 6 cœurs (3 minutes et 2 secondes) (Win7 Ultimate x64) (Visual Studio 2013)
-j8 sur 6 cœurs (3 minutes et 17 secondes) (Win7 Ultimate x64) (Visual Studio 2013)
Config
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.
la source
Également une petite note: si vous voulez réduire le temps de compilation, vous pouvez ajouter le drapeau
pour exécuter deux builds parallèles en même temps. Cela pourrait le réduire à la visualisation d'un film;)
la source
-j2
augmenterait la valeur de votre réponse.Télécharger le boost depuis: http://www.boost.org/users/download/ par exemple par svn
Après cela: cmd -> allez dans le répertoire boost ("D: \ boostTrunk" - où vous retirez ou téléchargez et extrayez le package): commande: bootstrap
nous avons créé bjam.exe dans ("D: \ boostTrunk") Après cela: commande: bjam toolset = msvc-10.0 variant = debug, release 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:
Collez ce code et vérifiez s'il fonctionne?
Ressources: https://www.youtube.com/watch?v=5AmwIwedTCM
la source
Voici comment j'ai pu utiliser Boost:
Vous pourrez construire votre projet sans aucune erreur!
la source
Les installateurs Windows situés ici ont parfaitement fonctionné pour moi. J'ai pris les mesures suivantes:
Bonne chance!
la source
Un petit ajout à la réponse principale très informative de KTC:
Si vous utilisez Visual Studio c ++ 2010 Express gratuit et avez réussi à obtenir celui-ci pour compiler des binaires 64 bits et que vous souhaitez 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 triste cas).
Je pourrais résoudre ce problème en utilisant ce qui suit: entre les étapes décrites ci-dessus comme
J'ai inséré un appel à «setenv» pour définir l'environnement. Pour une version, les étapes ci-dessus deviennent:
J'ai trouvé cette information ici: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
la source
Un exemple minimaliste pour vous aider à démarrer dans Visual Studio:
1. Téléchargez et décompressez Boost à partir d'ici.
2.Créez un projet vide Visual Studio, à l'aide d'un exemple de bibliothèque de boost qui ne nécessite pas de compilation séparée:
3.Dans vos propriétés de projet Visual Studio, définissez les répertoires Include supplémentaires:
Pour un exemple très simple:
Comment installer les bibliothèques Boost dans Visual Studio
Si vous ne voulez pas utiliser la bibliothèque de boost entière, juste un sous-ensemble:
Utilisation d'un sous-ensemble des bibliothèques boost dans Windows
Si vous souhaitez en savoir plus sur les bibliothèques qui nécessitent une compilation:
Comment utiliser les bibliothèques compilées Boost dans Windows
la source
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 les variables d'environnement dans Windows, lien en bas pour 7,8,10) La variable BOOST_ROOT semble être plus courante et est définie sur le chemin racine où vous décompressez boost.
Ensuite, dans Propriétés, c ++, général, Utilisation supplémentaire des répertoires d'inclusion
$(BOOST_ROOT)
. Ensuite, si / lorsque vous passez à une version plus récente de la bibliothèque boost, vous pouvez mettre à jour votre variable d'environnement pour pointer vers cette version plus récente. Comme plus de vos projets, utilisez boost, vous n'aurez pas à mettre à jour les «répertoires d'inclusion supplémentaires» pour chacun d'eux.Vous pouvez également créer une variable BOOST_LIB et la pointer vers l'endroit où les bibliothèques sont organisées. De même pour les Linker-> Additional Library Directories, vous n'aurez pas à mettre à jour les projets. J'ai des vieux trucs construits avec vs10 et de nouveaux trucs avec vs14 donc j'ai construit les deux saveurs de la lib boost dans le même dossier. Donc, si je déplace un projet de vs10 à vs14, je n'ai pas à changer les voies de boost.
REMARQUE: si vous modifiez une variable d'environnement, elle ne fonctionnera pas soudainement dans un projet VS ouvert. VS charge les variables au démarrage. Vous devrez donc fermer VS et le rouvrir.
la source