有关boost.log和boost.build(bjam)别名、构建和包含在目标中的帮助

Help with boost.log and boost.build (bjam) alias, building and including in target

本文关键字:boost 包含 目标 帮助 构建 别名 build log bjam 有关      更新时间:2023-10-16

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

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

不过,boost.jam往往有点落后于实际提供的库,所以也许我错了。我不熟悉日志库,但是,如果你想将其添加到boost.jam文件中,很可能需要将此行(或类似的内容)添加到库列表中:

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

在boostrongtd规则中,库的列表大约在文件的三分之二以下。(你不能错过它。那里还定义了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日志安装说明。)