Imported Upstream version 1.72.0
[platform/upstream/boost.git] / more / getting_started / detail / header-only.rst
1 .. Copyright David Abrahams 2006. Distributed under the Boost
2 .. Software License, Version 1.0. (See accompanying
3 .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
5 Header-Only Libraries
6 =====================
7
8 The first thing many people want to know is, “how do I build
9 Boost?”  The good news is that often, there's nothing to build.
10
11 .. admonition:: Nothing to Build?
12
13   Most Boost libraries are **header-only**: they consist *entirely
14   of header files* containing templates and inline functions, and
15   require no separately-compiled library binaries or special
16   treatment when linking.
17
18 .. .. _separate: 
19
20 The only Boost libraries that *must* be built separately are:
21
22 * Boost.Chrono_
23 * Boost.Context_
24 * Boost.Filesystem_
25 * Boost.GraphParallel_
26 * Boost.IOStreams_
27 * Boost.Locale_
28 * Boost.Log_ (see `build documentation`__)
29 * Boost.MPI_
30 * Boost.ProgramOptions_
31 * Boost.Python_ (see the `Boost.Python build documentation`__
32   before building and installing it)
33 * Boost.Regex_
34 * Boost.Serialization_
35 * Boost.Thread_
36 * Boost.Timer_
37 * Boost.Wave_
38
39 __ ../../libs/log/doc/html/log/installation/config.html
40 __ ../../libs/python/doc/html/building.html
41
42 A few libraries have optional separately-compiled binaries:
43
44 * Boost.DateTime_ has a binary component that is only needed if
45   you're using its ``to_string``\ /\ ``from_string`` or serialization
46   features, or if you're targeting Visual C++ 6.x or Borland.
47
48 * Boost.Graph_ also has a binary component that is only needed if
49   you intend to `parse GraphViz files`__.
50
51 * Boost.Math_ has binary components for the TR1 and C99
52   cmath functions.
53
54 * Boost.Random_ has a binary component which is only needed if
55   you're using ``random_device``.
56
57 * Boost.Test_ can be used in “header-only” or “separately compiled”
58   mode, although **separate compilation is recommended for serious
59   use**.
60
61 * Boost.Exception_ provides non-intrusive implementation of
62   exception_ptr for 32-bit _MSC_VER==1310 and _MSC_VER==1400
63   which requires a separately-compiled binary. This is enabled by
64   #define BOOST_ENABLE_NON_INTRUSIVE_EXCEPTION_PTR.
65
66 * Boost.System_ is header-only since Boost 1.69. A stub library is
67   still built for compatibility, but linking to it is no longer
68   necessary.
69
70 __ ../../libs/graph/doc/read_graphviz.html