如何构建boost序列化库

时间:2014-01-15 15:18:55

标签: c++ boost build compilation boost-serialization

我在某处读到了必须编译boost的序列化库(我忘了在哪里阅读它,否则我会发布一个链接)。

所以我从source forge下载了最新版本并将其解压缩到我项目中的路径。 现在呢?

我调查了该文件夹,但找不到makefile

那么我该怎么做才能编译boost:serialization lib?

编辑:但是我尝试使用它,而没有编译它,但是我收到了这个错误:

boost/archive/basic_xml_oarchive.hpp:92:9: error: 
no matching function for call to 'assertion_failed'
    BOOST_MPL_ASSERT((serialization::is_wrapper< T >));
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

所以我认为原因是它没有编译。是吗?

1 个答案:

答案 0 :(得分:9)

要构建Boost,请按照here的说明进行操作。

根据您的评论,您只想构建Boost(序列化)的一部分。如果你按照上面的链接,有一节包含以下建议(措辞可能会有所不同,我已经从Windows说明中复制了它):

  

有关调用b2时可以传递的其他选项的说明,请键入:

     

b2 --help

     

特别是,为了限制构建所花费的时间,您可能会对以下内容感兴趣:

     
      
  • 使用--show-libraries
  • 查看库名列表   
  • 使用--with-library-name或--without-library-name选项
  • 限制使用哪些库构建   

键入b2 --show-libraries会产生以下结果:

The following libraries require building:
    - atomic
    - chrono
    - context
    - coroutine
    - date_time
    - exception
    - filesystem
    - graph
    - graph_parallel
    - iostreams
    - locale
    - log
    - math
    - mpi
    - program_options
    - python
    - random
    - regex
    - serialization
    - signals
    - system
    - test
    - thread
    - timer
    - wave

因此,要构建仅序列化,请将选项--with-serialization传递给b2,例如使用VS2013构建所有库类型(静态/动态库,静态/动态运行时,调试/发布,单/多线程),您可以键入:

b2 toolset=msvc-12.0 --with-serialization --build-type=complete stage

注意,如果您打算在将来的项目中使用Boost,那么构建整个项目可能更简单(即省略--with-serialization选项),以便所有库都可以随时使用需要它们。