1

我已经从 SVN repo(trunk,rev 601)构建了 boost.log,并试图将它包含在一个可执行文件中。该库可从 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
    ;

用于构建 boost 的命令是:

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%
4

1 回答 1

3

Boost Log 库还不是官方的 boost 库。(我不知道它在审查过程中走了多远,但我在 Boost 的svn trunk中没有看到它。)所以它不在提供的 boost.jam 文件(当前的 trunk 版本)中也就不足为奇了。

那个 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 ;

(从boost log 安装说明中获取的依赖项列表。)

于 2011-05-31T16:14:17.727 回答