Chapter 4. Requirements

Table of Contents

4.1. Building/compiling requirements
4.2. Testing requirements
4.2.1. General testing requirements
4.2.2. Mac OS X testing requirements
4.2.3. Windows testing requirements
4.2.4. POSIX testing requirements
4.3. Deployment requirements
4.3.1. Mac OS X
4.3.2. Windows
4.3.3. POSIX

4.1. Building/compiling requirements

To compile and link with the library, all of these requirements must be met:

  • on Mac OS X and POSIX systems, GNU gcc/g++ 4.0 or later, and on Windows, Microsoft Visual C++ 2005 or later. Earlier compilers cannot correctly compile the library and its test suite, so they are unsupported. Compilers from other vendors have not been tested. In general, a compiler which complies with the C++ 2003 standard should be able to build the library, but may or may not pass the test suite.

  • SQLite3 (the latest version is recommended)

  • a type traits library; currently, this must be one of these libraries:

    • std::tr1 (shipped with gcc 4.x compilers),

    • Loki

    • boost

    For the type traits library, the serialization library prefers std::tr1 then Loki then boost, ie, if std::tr1 is not available (or specified as not to be used), it will try to use Loki, and if Loki is not available (or specified as not to be used), it will try to use boost, and if boost is not available (or specified as not to be used), the library will fail to compile. Clients can configure which one to use by modifying the config.hpp file (or #define'ing the preferred library prior to #include'ing config.hpp).

  • C++ exceptions must be enabled to handle error conditions

  • the STL; the library uses pair, vector, string, limits, and perhaps other STL items.

  • RTTI is required only if polymorphic types are to be supported (note that polymorphic type support defaults to ON). In other words, if no polymorphic types are to be serialized then RTTI support can be disabled. See "Selecting RTTI support" for instructions on how to disable RTTI support in the library.

You can use the serialization library either as a static library or a dynamic library. Which one you choose determines how you deploy your program, as outlined in the next section.