2009-09-18 8 views
1

Nous utilisons le `lib » comme celui-ci à introduire une bibliothèque pré-construite externe dans un projet:Boost.Build meilleures pratiques Introduct une bibliothèque pré-construit au projet

lib ace_lib_static : : <name>libboost_ace-vc80-mt-sgd.lib <variant>debug <toolset>msvc <address-model>64 
       <search>../lib/ACE_wrappers/lib64 
       ; 
lib ace_lib_static : : <name>libboost_ace-vc80-mt-s.lib <variant>release <toolset>msvc <address-model>64 
       <search>../lib/ACE_wrappers/lib64 
       ; 

lib ace_lib_static : : <name>libboost_ace-vc80-mt-sgd-5_6_8.lib <variant>debug <toolset>msvc 
    <search>../lib/ACE_wrappers 
    ; 

lib ace_lib_static : : <name>libboost_ace-vc80-mt-s-5_6_8.lib <variant>release <toolset>msvc 
    <search>../lib/ACE_wrappers 
    ; 

project myProject 
: requirements <include>. 
<include>../lib/ACE_wrappers 
<define>ACE_AS_STATIC_LIBS 
... 

Pour utiliser correctement ace_lib_static dans le projet, nous devons copier le bloc dans le fichier jam du projet. Notez qu'il définit le nom de fichier, le répertoire de recherche, le répertoire d'inclusion et la macro. Et ceci est pour VC 8.0 seulement. Si nous ajoutons le support pour les autres compilateurs, le bloc est encore plus gros.

Existe-t-il une meilleure façon d'introduire une bibliothèque externe prébuiltée dans boost.build? Idéalement, nous voulons avoir un fichier de confiture séparé que le fichier jam du projet peut référencer, et ajouter quelques lignes pour le rendre disponible au projet.

Répondre

4

Vous pouvez créer un nouveau fichier appelé Jamroot dans n'importe quel répertoire, contenant les définitions 'lib' ci-dessus. Ensuite, votre projet peut faire:

use-project /ace : <location-to-that-directory> ; 

    exe a : a.cpp : /ace//ace_lib_static ; 

Je recommande également que vous ajoutez ../lib/ACE_wrappers aux exigences d'utilisation, de sorte que la référence à/ace // ace_lib_static ajoutera inclut automatiquement.

HTH, Volodya