.. Copyright David Abrahams 2006. Distributed under the Boost
.. Software License, Version 1.0. (See accompanying
.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

Header-Only Libraries
=====================

The first thing many people want to know is, “how do I build
Boost?”  The good news is that often, there's nothing to build.

.. admonition:: Nothing to Build?

  Most Boost libraries are **header-only**: they consist *entirely
  of header files* containing templates and inline functions, and
  require no separately-compiled library binaries or special
  treatment when linking.

.. .. _separate: 

The only Boost libraries that *must* be built separately are:

* Boost.Filesystem_
* Boost.GraphParallel_
* Boost.IOStreams_
* Boost.MPI_
* Boost.ProgramOptions_
* Boost.Python_ (see the `Boost.Python build documentation`__
  before building and installing it)
* Boost.Regex_
* Boost.Serialization_
* Boost.Signals_
* Boost.System_
* Boost.Thread_
* Boost.Wave_

__ ../../libs/python/doc/building.html

A few libraries have optional separately-compiled binaries:

* Boost.DateTime_ has a binary component that is only needed if
  you're using its ``to_string``\ /\ ``from_string`` or serialization
  features, or if you're targeting Visual C++ 6.x or Borland.

* Boost.Graph_ also has a binary component that is only needed if
  you intend to `parse GraphViz files`__.

* Boost.Math_ has binary components for the TR1 and C99
  cmath functions.

* Boost.Random_ has a binary component which is only needed if
  you're using ``random_device``.

* Boost.Test_ can be used in “header-only” or “separately compiled”
  mode, although **separate compilation is recommended for serious
  use**.

__ ../../libs/graph/doc/read_graphviz.html
