123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
- <title>Configuring Boost.Build</title>
- <link rel="stylesheet" href="../boostbook.css" type="text/css">
- <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
- <link rel="home" href="../index.html" title="Boost.Python">
- <link rel="up" href="../building.html" title="Chapter 2. Building and Testing">
- <link rel="prev" href="installing_boost_python_on_your_.html" title="Installing Boost.Python on your System">
- <link rel="next" href="choosing_a_boost_python_library_.html" title="Choosing a Boost.Python Library Binary">
- </head>
- <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
- <table cellpadding="2" width="100%"><tr><td valign="top"><img alt="" width="" height="" src="../images/boost.png"></td></tr></table>
- <hr>
- <div class="spirit-nav">
- <a accesskey="p" href="installing_boost_python_on_your_.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../building.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="choosing_a_boost_python_library_.html"><img src="../images/next.png" alt="Next"></a>
- </div>
- <div class="section">
- <div class="titlepage"><div><div><h3 class="title">
- <a name="building.configuring_boost_build"></a><a class="link" href="configuring_boost_build.html" title="Configuring Boost.Build">Configuring Boost.Build</a>
- </h3></div></div></div>
- <div class="toc"><dl class="toc">
- <dt><span class="section"><a href="configuring_boost_build.html#building.configuring_boost_build.python_configuration_parameters">Python
- Configuration Parameters</a></span></dt>
- <dt><span class="section"><a href="configuring_boost_build.html#building.configuring_boost_build.examples">Examples</a></span></dt>
- </dl></div>
- <p>
- As described in the <a href="http://www.boost.org/build/doc/html/bbv2/overview/configuration.html" target="_top">Boost.Build
- Reference Manual</a>, a file called <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> in
- your home directory is used to specify the tools and libraries available
- to the build system. You may need to create or edit <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> to
- tell Boost.Build how to invoke Python, <code class="computeroutput"><span class="preprocessor">#include</span></code>
- its headers, and link with its libraries.
- </p>
- <div class="note"><table border="0" summary="Note">
- <tr>
- <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
- <th align="left">Note</th>
- </tr>
- <tr><td align="left" valign="top"><p>
- If you are using a unix-variant OS and you ran Boost's <code class="computeroutput"><span class="identifier">configure</span></code>
- script, it may have generated a <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
- for you. <a href="#ftn.building.configuring_boost_build.f0" class="footnote" name="building.configuring_boost_build.f0"><sup class="footnote">[2]</sup></a> If your <code class="computeroutput"><span class="identifier">configure</span></code>/<code class="computeroutput"><span class="identifier">make</span></code> sequence was successful and Boost.Python
- binaries were built, your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
- file is probably already correct.
- </p></td></tr>
- </table></div>
- <p>
- If you have one fairly “standard” python installation for your platform,
- you might not need to do anything special to describe it. If you haven't
- configured python in <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> (and
- you don't specify <code class="computeroutput"><span class="special">--</span><span class="identifier">without</span><span class="special">-</span><span class="identifier">python</span></code>
- on the Boost.Build command line), Boost.Build will automatically execute
- the equivalent of
- </p>
- <pre class="programlisting"><span class="identifier">import</span> <span class="identifier">toolset</span> <span class="special">:</span> <span class="keyword">using</span> <span class="special">;</span>
- <span class="keyword">using</span> <span class="identifier">python</span> <span class="special">;</span>
- </pre>
- <p>
- which automatically looks for Python in the most likely places. However,
- that only happens when using the Boost.Python project file (e.g. when referred
- to by another project as in the quickstart method). If instead you are linking
- against separately-compiled Boost.Python binaries, you should set up a <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> file
- with at least the minimal incantation above.
- </p>
- <div class="section">
- <div class="titlepage"><div><div><h4 class="title">
- <a name="building.configuring_boost_build.python_configuration_parameters"></a><a class="link" href="configuring_boost_build.html#building.configuring_boost_build.python_configuration_parameters" title="Python Configuration Parameters">Python
- Configuration Parameters</a>
- </h4></div></div></div>
- <p>
- If you have several versions of Python installed, or Python is installed
- in an unusual way, you may want to supply any or all of the following optional
- parameters to <code class="computeroutput"><span class="keyword">using</span> <span class="identifier">python</span></code>.
- </p>
- <div class="variablelist">
- <p class="title"><b></b></p>
- <dl class="variablelist">
- <dt><span class="term">version</span></dt>
- <dd><p>
- the version of Python to use. Should be in Major.Minor format, for
- example, <code class="computeroutput"><span class="number">2.3</span></code>. Do not
- include the subminor version (i.e. <span class="bold"><strong>not</strong></span>
- <code class="computeroutput"><span class="number">2.5</span><span class="special">.</span><span class="number">1</span></code>). If you have multiple Python versions
- installed, the version will usually be the only configuration argument
- required.
- </p></dd>
- <dt><span class="term">cmd-or-prefix</span></dt>
- <dd><p>
- preferably, a command that invokes a Python interpreter. Alternatively,
- the installation prefix for Python libraries and header files. Only
- use the alternative formulation if there is no appropriate Python
- executable available.
- </p></dd>
- <dt><span class="term"><span class="bold"><strong>includes</strong></span></span></dt>
- <dd><p>
- the <code class="computeroutput"><span class="preprocessor">#include</span></code> paths
- for Python headers. Normally the correct path(s) will be automatically
- deduced from <code class="computeroutput"><span class="identifier">version</span></code>
- and/or <code class="computeroutput"><span class="identifier">cmd</span><span class="special">-</span><span class="keyword">or</span><span class="special">-</span><span class="identifier">prefix</span></code>.
- </p></dd>
- <dt><span class="term"><span class="bold"><strong>libraries</strong></span></span></dt>
- <dd><p>
- the path to Python library binaries. On MacOS/Darwin, you can also
- pass the path of the Python framework. Normally the correct path(s)
- will be automatically deduced from <code class="computeroutput"><span class="identifier">version</span></code>
- and/or <code class="computeroutput"><span class="identifier">cmd</span><span class="special">-</span><span class="keyword">or</span><span class="special">-</span><span class="identifier">prefix</span></code>.
- </p></dd>
- <dt><span class="term"><span class="bold"><strong>condition</strong></span></span></dt>
- <dd><p>
- if specified, should be a set of Boost.Build properties that are
- matched against the build configuration when Boost.Build selects
- a Python configuration to use. See examples below for details.
- </p></dd>
- <dt><span class="term"><span class="bold"><strong>extension-suffix</strong></span></span></dt>
- <dd><p>
- A string to append to the name of extension modules before the true
- filename extension. You almost certainly don't need to use this.
- Usually this suffix is only used when targeting a Windows debug build
- of Python, and will be set automatically for you based on the value
- of the <a class="link" href="python_debugging_builds.html" title="Python Debugging Builds"><python-debugging></a>
- feature. However, at least one Linux distribution (Ubuntu Feisty
- Fawn) has a specially configured <a href="https://wiki.ubuntu.com/PyDbgBuilds" target="_top"><python-dbg></a>
- package that claims to use such a suffix.
- </p></dd>
- </dl>
- </div>
- </div>
- <div class="section">
- <div class="titlepage"><div><div><h4 class="title">
- <a name="building.configuring_boost_build.examples"></a><a class="link" href="configuring_boost_build.html#building.configuring_boost_build.examples" title="Examples">Examples</a>
- </h4></div></div></div>
- <p>
- Note that in the examples below, case and <span class="bold"><strong>especially
- whitespace</strong></span> are significant.
- </p>
- <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
- <li class="listitem">
- <p class="simpara">
- If you have both python 2.5 and python 2.4 installed, <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> might contain
- </p>
- <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="number">2.5</span> <span class="special">;</span> <span class="special">#</span> <span class="identifier">Make</span> <span class="identifier">both</span> <span class="identifier">versions</span> <span class="identifier">of</span> <span class="identifier">Python</span> <span class="identifier">available</span>
- <span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="number">2.4</span> <span class="special">;</span> <span class="special">#</span> <span class="identifier">To</span> <span class="identifier">build</span> <span class="identifier">with</span> <span class="identifier">python</span> <span class="number">2.4</span><span class="special">,</span> <span class="identifier">add</span> <span class="identifier">python</span><span class="special">=</span><span class="number">2.4</span>
- <span class="preprocessor"># to</span> <span class="identifier">your</span> <span class="identifier">command</span> <span class="identifier">line</span><span class="special">.</span>
- </pre>
- <p class="simpara">
- The first version configured (2.5) becomes the default. To build against
- python 2.4, add <code class="computeroutput"><span class="identifier">python</span><span class="special">=</span><span class="number">2.4</span></code>
- to the <code class="computeroutput"><span class="identifier">bjam</span></code> command
- line.
- </p>
- </li>
- <li class="listitem">
- <p class="simpara">
- If you have python installed in an unusual location, you might supply
- the path to the interpreter in the <code class="computeroutput"><span class="identifier">cmd</span><span class="special">-</span><span class="keyword">or</span><span class="special">-</span><span class="identifier">prefix</span></code>
- parameter:
- </p>
- <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="special">:</span> <span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">python</span><span class="special">-</span><span class="number">2.6</span><span class="special">-</span><span class="identifier">beta</span><span class="special">/</span><span class="identifier">bin</span><span class="special">/</span><span class="identifier">python</span> <span class="special">;</span>
- </pre>
- </li>
- <li class="listitem">
- <p class="simpara">
- If you have a separate build of Python for use with a particular toolset,
- you might supply that toolset in the <code class="computeroutput"><span class="identifier">condition</span></code>
- parameter:
- </p>
- <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">python</span> <span class="special">;</span> <span class="special">#</span> <span class="identifier">use</span> <span class="keyword">for</span> <span class="identifier">most</span> <span class="identifier">toolsets</span>
- <span class="preprocessor"># Use</span> <span class="identifier">with</span> <span class="identifier">Intel</span> <span class="identifier">C</span><span class="special">++</span> <span class="identifier">toolset</span>
- <span class="keyword">using</span> <span class="identifier">python</span>
- <span class="special">:</span> <span class="special">#</span> <span class="identifier">version</span>
- <span class="special">:</span> <span class="identifier">c</span><span class="special">:\\</span><span class="identifier">Devel</span><span class="special">\\</span><span class="identifier">Python</span><span class="special">-</span><span class="number">2.5</span><span class="special">-</span><span class="identifier">IntelBuild</span><span class="special">\\</span><span class="identifier">PCBuild</span><span class="special">\\</span><span class="identifier">python</span> <span class="special">#</span> <span class="identifier">cmd</span><span class="special">-</span><span class="keyword">or</span><span class="special">-</span><span class="identifier">prefix</span>
- <span class="special">:</span> <span class="special">#</span> <span class="identifier">includes</span>
- <span class="special">:</span> <span class="special">#</span> <span class="identifier">libraries</span>
- <span class="special">:</span> <span class="special"><</span><span class="identifier">toolset</span><span class="special">></span><span class="identifier">intel</span> <span class="special">#</span> <span class="identifier">condition</span>
- <span class="special">;</span>
- </pre>
- </li>
- <li class="listitem">
- <p class="simpara">
- If you have downloaded the Python sources and built both the normal
- and the <a class="link" href="python_debugging_builds.html" title="Python Debugging Builds">"python
- debugging"</a> builds from source on Windows, you might see:
- </p>
- <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="number">2.5</span> <span class="special">:</span> <span class="identifier">C</span><span class="special">:\\</span><span class="identifier">src</span><span class="special">\\</span><span class="identifier">Python</span><span class="special">-</span><span class="number">2.5</span><span class="special">\\</span><span class="identifier">PCBuild</span><span class="special">\\</span><span class="identifier">python</span> <span class="special">;</span>
- <span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="number">2.5</span> <span class="special">:</span> <span class="identifier">C</span><span class="special">:\\</span><span class="identifier">src</span><span class="special">\\</span><span class="identifier">Python</span><span class="special">-</span><span class="number">2.5</span><span class="special">\\</span><span class="identifier">PCBuild</span><span class="special">\\</span><span class="identifier">python_d</span>
- <span class="special">:</span> <span class="special">#</span> <span class="identifier">includes</span>
- <span class="special">:</span> <span class="special">#</span> <span class="identifier">libs</span>
- <span class="special">:</span> <span class="special"><</span><span class="identifier">python</span><span class="special">-</span><span class="identifier">debugging</span><span class="special">></span><span class="identifier">on</span> <span class="special">;</span>
- </pre>
- </li>
- <li class="listitem">
- <p class="simpara">
- You can set up your user-config.jam so a bjam built under Windows can
- build/test both Windows and Cygwin_ python extensions. Just pass <code class="computeroutput"><span class="special"><</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">os</span><span class="special">></span><span class="identifier">cygwin</span></code>
- in the <code class="computeroutput"><span class="identifier">condition</span></code> parameter
- for the cygwin python installation:
- </p>
- <pre class="programlisting"><span class="preprocessor"># windows</span> <span class="identifier">installation</span>
- <span class="keyword">using</span> <span class="identifier">python</span> <span class="special">;</span>
- <span class="preprocessor"># cygwin</span> <span class="identifier">installation</span>
- <span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="special">:</span> <span class="identifier">c</span><span class="special">:\\</span><span class="identifier">cygwin</span><span class="special">\\</span><span class="identifier">bin</span><span class="special">\\</span><span class="identifier">python2</span><span class="special">.</span><span class="number">5</span> <span class="special">:</span> <span class="special">:</span> <span class="special">:</span> <span class="special"><</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">os</span><span class="special">></span><span class="identifier">cygwin</span> <span class="special">;</span>
- </pre>
- <p class="simpara">
- when you put target-os=cygwin in your build request, it should build
- with the cygwin version of python: <a name="flavor"></a>_
- </p>
- <pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">target</span><span class="special">-</span><span class="identifier">os</span><span class="special">=</span><span class="identifier">cygwin</span> <span class="identifier">toolset</span><span class="special">=</span><span class="identifier">gcc</span>
- </pre>
- <p class="simpara">
- This is supposed to work the other way, too (targeting windows python
- with a <a href="http://cygwin.com" target="_top">Cygwin</a> bjam) but it seems
- as though the support in Boost.Build's toolsets for building that way
- is broken at the time of this writing.
- </p>
- </li>
- <li class="listitem">
- <p class="simpara">
- Note that because of <a href="http://zigzag.cs.msu.su/boost.build/wiki/AlternativeSelection" target="_top">the
- way Boost.Build currently selects target alternatives</a>, you
- might have be very explicit in your build requests. For example, given:
- </p>
- <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="number">2.5</span> <span class="special">;</span> <span class="special">#</span> <span class="identifier">a</span> <span class="identifier">regular</span> <span class="identifier">windows</span> <span class="identifier">build</span>
- <span class="keyword">using</span> <span class="identifier">python</span> <span class="special">:</span> <span class="number">2.4</span> <span class="special">:</span> <span class="special">:</span> <span class="special">:</span> <span class="special">:</span> <span class="special"><</span><span class="identifier">target</span><span class="special">-</span><span class="identifier">os</span><span class="special">></span><span class="identifier">cygwin</span> <span class="special">;</span>
- </pre>
- <p class="simpara">
- building with
- </p>
- <pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">target</span><span class="special">-</span><span class="identifier">os</span><span class="special">=</span><span class="identifier">cygwin</span>
- </pre>
- <p class="simpara">
- will yield an error. Instead, you'll need to write
- </p>
- <pre class="programlisting"><span class="identifier">bjam</span> <span class="identifier">target</span><span class="special">-</span><span class="identifier">os</span><span class="special">=</span><span class="identifier">cygwin</span><span class="special">/</span><span class="identifier">python</span><span class="special">=</span><span class="number">2.4</span>
- </pre>
- </li>
- </ul></div>
- </div>
- <div class="footnotes">
- <br><hr style="width:100; text-align:left;margin-left: 0">
- <div id="ftn.building.configuring_boost_build.f0" class="footnote"><p><a href="#building.configuring_boost_build.f0" class="para"><sup class="para">[2] </sup></a>
- <code class="computeroutput"><span class="identifier">configure</span></code> overwrites
- the existing <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> in your home directory (if any)
- after making a backup of the old version.
- </p></div>
- </div>
- </div>
- <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
- <td align="left"></td>
- <td align="right"><div class="copyright-footer">Copyright © 2002-2015 David
- Abrahams, Stefan Seefeld<br>Copyright © 2002-2015 David Abrahams, Stefan Seefeld<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
- </p>
- </div></td>
- </tr></table>
- <hr>
- <div class="spirit-nav">
- <a accesskey="p" href="installing_boost_python_on_your_.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../building.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="choosing_a_boost_python_library_.html"><img src="../images/next.png" alt="Next"></a>
- </div>
- </body>
- </html>
|