Search code examples
c++boostbuildcompilationboost-serialization

how to build boost serialization library


I read somewhere that the serialization library of boost has to be compiled (I forgot where I read it, otherwise I would have posted a link).

So I downloaded the latest release from source forge and extracted it to a path in my project. And now?

I investigated the folder, but I couldn't find a makefile.

So what do I have to do, to compile the boost:serialization lib?

Edit: nevertheless I tried to work with it, without compiling it, but I get this error:

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

So I think the reason for this is, that it wasn't compiled. Is that right?


Solution

  • To build Boost, follow the instructions here.

    As per your comment, you want to build just a part of Boost (serialization). If you follow the above link, there is a section containing the following advice (wording might vary, I've copied it from the Windows instructions):

    For a description of other options you can pass when invoking b2, type:

    b2 --help

    In particular, to limit the amount of time spent building, you may be interested in:

    • reviewing the list of library names with --show-libraries
    • limiting which libraries get built with the --with-library-name or --without-library-name options

    Typing b2 --show-libraries yields the following:

    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
    

    So, to build just serialization, pass the option --with-serialization to b2 e.g. to build all library types (static/dynamic library, static/dynamic runtime, debug/release, single/multithreading) using VS2013 you could type this:

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

    Note, if you plan to make use of Boost in future projects, it may be simpler to just build the entire thing (i.e. omitting the --with-serialization option) so that all libraries are ready to use straight away whenever you need them.