11
votes

Comment puis-je utiliser une seule bibliothèque / fichier de boost?

Duplicaté possible:

Construire un sous-ensemble de boost sous Windows

J'utilise Visual C ++ 6.0, et j'aimerais utiliser Boost :: aléatoire . Je ne trouve aucun exemple montrant comment je voudrais simplement utiliser cela et seule cette bibliothèque. Puis-je simplement y inclure dans ma source?


6 Réponses :


1
votes

Oui, la plupart des bibliothèques de boost sont uniquement d'en-tête, vous n'avez donc pas besoin de compiler des fichiers source.


0 commentaires

4
votes

La plupart des boost sont distribués comme des bibliothèques "en-tête uniquement" - ce qui signifie que vous n'avez pas besoin de "construire" une sorte de type à utiliser cette bibliothèque. Random est l'un de ceux-ci, il est donc possible de simplement inclure les fichiers d'en-tête corrects et vous serez en train de rire. Je dirais qu'il est préférable d'obtenir toute la source de boost quelque part et de réfléchir à ce que les différentes parties ont tendance à avoir des dépendances les unes sur les autres.


0 commentaires

1
votes

Oui, utiliser boost :: aléatoire , vous pouvez simplement inclure l'en-tête dans votre fichier source.

Etant donné que Boost utilise de manière approfondie des modèles, de nombreuses bibliothèques sont implémentées purement dans les en-têtes (et des fichiers de mise en œuvre de modèles, A la TXX ).

La plupart des bibliothèques sont également indépendantes, vous pouvez donc en utiliser une seule sans dépendre d'une autre. (Les exceptions sont documentées.)

Si vous regardez le Liste des bibliothèques de boost Vous verrez beaucoup d'entre eux étiqueté "l'en-tête seulement", il n'y a donc aucune bibliothèque supplémentaire pour relier.


0 commentaires

7
votes

La seule chose à faire attention est d'ajouter le chemin d'accès à Boost dans votre chemin Inclure. Même si les bibliothèques sont des en-têtes uniquement, de nombreux en-têtes de boost comprennent d'autres en-têtes de la bibliothèque de Boost et ne pourront pas les trouver si vous n'avez pas le chemin Inclure Configurer correctement.

Mon projet actuel a cet inclusion : xxx

mon code comprend ensuite les en-têtes de boost comme ceci: xxx

boost / aléatoire.hpp a une bande de lignes Comme #include "boost / aléatoire / linear_congruentiel.hpp" , c'est pourquoi vous avez besoin du chemin Inclure.


0 commentaires

0
votes

Comment j'irais simplement utiliser cela et seule cette bibliothèque

Je ne suis pas sûr de votre préoccupation ici. Même si vous avez inclus d'autres en-têtes, et / ou d'autres bibliothèques liées, votre exécutable final comprendra uniquement les parties de la bibliothèque nécessaires pour résoudre les symboles de votre code. Il ne jettera pas dans des modules d'objet non utilisés. Le code et les modèles inlinérés des en-têtes ne sont pas instanciés à moins qu'ils soient référencés.

Etant donné que Boost est avant tout une bibliothèque de modèles et pour contourner le manque de majuscules dans la plupart des litres, le code est inlincé dans le fichier d'en-tête, les modèles instanciés sont compilés dans le module d'objet dans lequel il est instancié. Donc, vous risquez de vous retrouver avec du code en double dans plusieurs modules, ce que, si la taille exécutable si votre préoccupation, vous devez peut-être être au courant.


0 commentaires

27
votes

Boost a eu un très bel outil appelé BCP qui fait ce que vous voulez. Vérifiez-le.

de la DOCS: P>

bcp boost/regex.hpp /foo

Copies boost/regex.hpp and all dependencies including the regex source code 
(in libs/regex/src) and build files (in libs/regex/build) to /foo.  Does not
copy the regex documentation,  test, or example code.


0 commentaires