Помощь с псевдонимами boost.log и boost.build (bjam), сборкой и включением в target - PullRequest
1 голос
/ 31 мая 2011

Я создал boost.log из репозитория SVN (trunk, rev 601) и пытаюсь включить его в исполняемый файл. Библиотека может использоваться с VS2008, но не bjam.

Я пытаюсь создать псевдоним библиотеки boost.log, как и в случае с другими библиотеками boost, но получаю сообщение об ошибке: "невозможно найти файл или цель с именем '/ boost / log'"

Boost - это сборка из исходного кода (команда ниже), у меня та же проблема с v1.45 и v1.46.1

Jamfile.jam (фрагмент):

alias libboostpo    : /boost//program_options   : <link>static <threading>multi ;
alias libboostfs    : /boost//filesystem        : <link>static <threading>multi ; 
alias libboostlog    : /boost//log              : <link>static <threading>multi ; 

alias libfoundation : /path-foundation//foundation : <link>static <threading>multi ;
alias libtestcommon : /path-testcommon//testcommon : <link>static <threading>multi ;

exe foundationtest
    : libfoundation libtestcommon
      libboostpo libboostfs
      libboostlog 
      libgtest_win libggmock_win 
      [ glob-tree *.cpp *.rc ]
    : <toolset>msvc
    ;

Команда, используемая для создания надстройки:

bjam install variant=debug,release link=static,shared -j8 --prefix=%OutputPath% -s ZLIB_SOURCE=%PathToCOTS%\zlib --without-python --without-mpi --without-wave --without-test --without-graph --without-math --toolset=msvc >> %logFile%

1 Ответ

3 голосов
/ 31 мая 2011

Библиотека Boost Log не является официальной библиотекой Boost. (Я не знаю, как далеко он продвинулся в процессе обзора, но я не вижу его в Boost's svn trunk .) Поэтому неудивительно, что его нет в предоставленном файле boost.jam ( текущая версия транка ).

Этот boost.jam, как правило, немного отстает от того, что на самом деле предоставляются библиотеки, так что, возможно, я ошибаюсь. Я не знаком с библиотекой журналов, но, если вы хотите добавить ее в свой файл boost.jam, скорее всего, вам нужно добавить эту строку (или что-то подобное) в список библиотек:

    lib log
        : filesystem
          system
          date_time
          thread
          regex
        :
        :
        : <link>shared:<define>BOOST_LOG_DYN_LINK ;

Список библиотек составляет примерно две трети файла в правиле boost_std. (Вы не можете пропустить это. Там определено 25 других библиотек.) Это будет работать только в том случае, если в библиотеке журналов используется то же соглашение об именах, что и в остальных библиотеках boost.

Другой вариант - просто написать собственное правило lib и указать на эту версию самостоятельно. Это было бы примерно

lib libboostlog
    : /boost//headers
      /boost//filesystem
      /boost//system
      /boost//date_time
      /boost//thread
      /boost//regex
    : <name>boost_log
      <link>static
      <threading>multi ;

(Список зависимостей, взятых из инструкций по установке журнала форсирования .)

...