Boost.Build лучшая практика для введения предварительно собранной библиотеки в проект - PullRequest
1 голос
/ 18 сентября 2009

В настоящее время мы используем `lib ', как это, чтобы ввести внешнюю предварительно собранную библиотеку в проект:

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
...

Чтобы правильно использовать ace_lib_static в проекте, мы должны скопировать блок в jamfile проекта. Обратите внимание, что он определяет имя файла, каталог поиска, каталог включения и макрос. И это только для VC 8.0. Если мы добавим поддержку других компиляторов, блок станет еще больше.

Есть ли лучший способ добавить внешнюю предварительно собранную библиотеку в boost.build? В идеале мы хотим иметь отдельный jamfile, на который может ссылаться jamfile проекта, и добавить пару строк, чтобы сделать его доступным для проекта.

1 Ответ

4 голосов
/ 19 сентября 2009

Вы можете создать новый файл с именем Jamroot в любом каталоге, содержащий определения 'lib' выше. Тогда ваш проект может сделать:

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

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

Я бы также порекомендовал вам добавить ../lib/ACE_wrappers к требованиям использования, чтобы ссылка на / ace // ace_lib_static включала автоматически.

НТН, Володя

...