summaryrefslogtreecommitdiff
path: root/more/getting_started/detail/build-from-source-head.rst
blob: 4fdeb8d896b641527e73e80f3c9774581bfabcec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
.. 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)

Install Boost.Build
...................

Boost.Build_ is a text-based system for developing, testing, and
installing software. First, you'll need to build and
install it. To do this:

1. Go to the directory ``tools``\ |/|\ ``build``\ |/|.
2. Run |bootstrap|
3. Run ``b2 install --prefix=``\ *PREFIX* where *PREFIX* is
   the directory where you want Boost.Build to be installed
4. Add *PREFIX*\ |/|\ ``bin`` to your PATH environment variable.

.. _Boost.Build: ../../tools/build/index.html
.. _Boost.Build documentation: Boost.Build_

.. _toolset:
.. _toolset-name:

Identify Your Toolset
.....................

First, find the toolset corresponding to your compiler in the
following table (an up-to-date list is always available `in the
Boost.Build documentation`__).

__ http://www.boost.org/build/doc/html/bbv2/reference/tools.html

.. Note:: If you previously chose a toolset for the purposes of
  `building b2`_, you should assume it won't work and instead
  choose newly from the table below.

.. _building b2: ../../doc/html/bbv2/installation.html

+-----------+--------------------+------------------------------------------------------------+
|Toolset    |Vendor              |Notes                                                       |
|Name       |                    |                                                            |
+===========+====================+============================================================+
|``acc``    |Hewlett Packard     |Only very recent versions are known to work well with Boost |
+-----------+--------------------+------------------------------------------------------------+
|``borland``|Borland             |                                                            |
+-----------+--------------------+------------------------------------------------------------+
|``como``   |Comeau Computing    |Using this toolset may require configuring__ another        |
|           |                    |toolset to act as its backend.                              |
+-----------+--------------------+------------------------------------------------------------+
|``darwin`` |Apple Computer      |Apple's version of the GCC toolchain with support for       |
|           |                    |Darwin and MacOS X features such as frameworks.             |
+-----------+--------------------+------------------------------------------------------------+
|``gcc``    |The Gnu Project     |Includes support for Cygwin and MinGW compilers.            |
+-----------+--------------------+------------------------------------------------------------+
|``hp_cxx`` |Hewlett Packard     |Targeted at the Tru64 operating system.                     |
+-----------+--------------------+------------------------------------------------------------+
|``intel``  |Intel               |                                                            |
+-----------+--------------------+------------------------------------------------------------+
|``msvc``   |Microsoft           |                                                            |
+-----------+--------------------+------------------------------------------------------------+
|``sun``    |Oracle              |Only very recent versions are known to work well with       |
|           |                    |Boost.  Note that the Oracle/Sun compiler has a large number|
|           |                    |of options which effect binary compatibility: it is vital   |
|           |                    |that the libraries are built with the same options that your|
|           |                    |appliction will use. In particular be aware that the default|
|           |                    |standard library may not work well with Boost, *unless you  |
|           |                    |are building for C++11*. The particular compiler options you|
|           |                    |need can be injected with the b2 command line options       |
|           |                    |``cxxflags=``and ``linkflags=``.  For example to build with |
|           |                    |the Apache standard library in C++03 mode use               |
|           |                    |``b2 cxxflags=-library=stdcxx4 linkflags=-library=stdcxx4``.|
+-----------+--------------------+------------------------------------------------------------+
|``vacpp``  |IBM                 |The VisualAge C++ compiler.                                 |
+-----------+--------------------+------------------------------------------------------------+

__ Boost.Build_

If you have multiple versions of a particular compiler installed,
you can append the version number to the toolset name, preceded by
a hyphen, e.g. ``intel-9.0`` or
``borland-5.4.3``. |windows-version-name-caveat|


.. _build directory:
.. _build-directory:

Select a Build Directory
........................

Boost.Build_ will place all intermediate files it generates while
building into the **build directory**.  If your Boost root
directory is writable, this step isn't strictly necessary: by
default Boost.Build will create a ``bin.v2/`` subdirectory for that
purpose in your current working directory.

Invoke ``b2``
...............

.. |build-directory| replace:: *build-directory*
.. |toolset-name| replace:: *toolset-name*

Change your current directory to the Boost root directory and
invoke ``b2`` as follows:

.. parsed-literal::

  b2 **--build-dir=**\ |build-directory|_ **toolset=**\ |toolset-name|_ |build-type-complete| stage

For a complete description of these and other invocation options,
please see the `Boost.Build documentation`__.

__ http://www.boost.org/build/doc/html/bbv2/overview/invocation.html