帮助boost.log和boost.build(bjam)别名,构建并包含在目标中

时间:2011-05-31 11:32:16

标签: c++ boost logging alias bjam

我已经从SVN repo(trunk,rev 601)构建了boost.log,并尝试将其包含在可执行文件中。 lib可以从VS2008使用,但不能用于bjam。

我尝试使用其他boost库来为boost.log lib设置别名,但是我收到错误: “无法找到名为'/ 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%

1 个答案:

答案 0 :(得分:3)

Boost日志库尚未成为官方的升级库。 (我不知道在审核过程中它有多远,但我没有在Boost的svn trunk中看到它。)因此,它不在提供的boost.jam文件中({{3 }})。

虽然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 ;

(取自current trunk version的依赖关系列表。)