Brian Silverman | 9d8fa39 | 2018-08-04 17:09:24 -0700 | [diff] [blame^] | 1 | <html> |
| 2 | <head> |
| 3 | <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> |
| 4 | <title>Boost.Config</title> |
| 5 | <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> |
| 6 | <meta name="generator" content="DocBook XSL Stylesheets V1.77.1"> |
| 7 | <link rel="home" href="index.html" title="Boost.Config"> |
| 8 | <link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference"> |
| 9 | </head> |
| 10 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| 11 | <table cellpadding="2" width="100%"><tr> |
| 12 | <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> |
| 13 | <td align="center"><a href="../../../../index.html">Home</a></td> |
| 14 | <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> |
| 15 | <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> |
| 16 | <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> |
| 17 | <td align="center"><a href="../../../../more/index.htm">More</a></td> |
| 18 | </tr></table> |
| 19 | <hr> |
| 20 | <div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div> |
| 21 | <div class="article"> |
| 22 | <div class="titlepage"> |
| 23 | <div> |
| 24 | <div><h2 class="title"> |
| 25 | <a name="config"></a>Boost.Config</h2></div> |
| 26 | <div><div class="authorgroup"><div class="author"><h3 class="author"> |
| 27 | <span class="firstname">Vesa Karvonen, John Maddock</span> <span class="surname">Beman Dawes</span> |
| 28 | </h3></div></div></div> |
| 29 | <div><p class="copyright">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John |
| 30 | Maddock</p></div> |
| 31 | <div><div class="legalnotice"> |
| 32 | <a name="config.legal"></a><p> |
| 33 | Distributed under the Boost Software License, Version 1.0. (See accompanying |
| 34 | 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>) |
| 35 | </p> |
| 36 | </div></div> |
| 37 | </div> |
| 38 | <hr> |
| 39 | </div> |
| 40 | <div class="toc"> |
| 41 | <p><b>Table of Contents</b></p> |
| 42 | <dl> |
| 43 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform">Configuring |
| 44 | Boost for Your Platform</a></span></dt> |
| 45 | <dd><dl> |
| 46 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using |
| 47 | the default boost configuration</a></span></dt> |
| 48 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The |
| 49 | <boost/config.hpp> header</a></span></dt> |
| 50 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using |
| 51 | the configure script</a></span></dt> |
| 52 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User |
| 53 | settable options</a></span></dt> |
| 54 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced |
| 55 | configuration usage</a></span></dt> |
| 56 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing |
| 57 | the boost configuration</a></span></dt> |
| 58 | </dl></dd> |
| 59 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html">Boost Macro Reference</a></span></dt> |
| 60 | <dd><dl> |
| 61 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros |
| 62 | that describe C++03 defects</a></span></dt> |
| 63 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros |
| 64 | that describe optional features</a></span></dt> |
| 65 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros |
| 66 | that describe possible C++ future features</a></span></dt> |
| 67 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros |
| 68 | that describe C++11 features not supported</a></span></dt> |
| 69 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros |
| 70 | that allow use of C++11 features with C++03 compilers</a></span></dt> |
| 71 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__14_features_not_supported">Macros |
| 72 | that describe C++14 features not supported</a></span></dt> |
| 73 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__14_features_with_c__11_or_earlier_compilers">Macros |
| 74 | that allow use of C++14 features with C++11 or earlier compilers</a></span></dt> |
| 75 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__17_features_not_supported">Macros |
| 76 | that describe C++17 features not supported</a></span></dt> |
| 77 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_features_that_have_been_removed_from_the_standard_">Macros |
| 78 | that describe features that have been removed from the standard.</a></span></dt> |
| 79 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost |
| 80 | Helper Macros</a></span></dt> |
| 81 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost |
| 82 | Informational Macros</a></span></dt> |
| 83 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost |
| 84 | Deprecated Macros</a></span></dt> |
| 85 | <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros |
| 86 | for libraries with separate source code</a></span></dt> |
| 87 | </dl></dd> |
| 88 | <dt><span class="section"><a href="boost_config/build_config.html">Build Time Configuration</a></span></dt> |
| 89 | <dt><span class="section"><a href="boost_config/cstdint.html">Standard Integer Types</a></span></dt> |
| 90 | <dd><dl> |
| 91 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.overview">Overview</a></span></dt> |
| 92 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.rationale">Rationale</a></span></dt> |
| 93 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.ce"><span class="emphasis"><em>Caveat emptor</em></span></a></span></dt> |
| 94 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.exact_width_integer_types">Exact-width |
| 95 | integer types</a></span></dt> |
| 96 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.minimum_width_integer_types">Minimum-width |
| 97 | integer types</a></span></dt> |
| 98 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.fastest_minimum_width_integer_types">Fastest |
| 99 | minimum-width integer types</a></span></dt> |
| 100 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.greatest_width_integer_types">Greatest-width |
| 101 | integer types</a></span></dt> |
| 102 | <dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.integer_constant_macros">Integer |
| 103 | Constant Macros</a></span></dt> |
| 104 | </dl></dd> |
| 105 | <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html">Guidelines for |
| 106 | Boost Authors</a></span></dt> |
| 107 | <dd><dl> |
| 108 | <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling |
| 109 | Compiler Warnings</a></span></dt> |
| 110 | <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding |
| 111 | New Defect Macros</a></span></dt> |
| 112 | <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding |
| 113 | New Feature Test Macros</a></span></dt> |
| 114 | <dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying |
| 115 | the Boost Configuration Headers</a></span></dt> |
| 116 | </dl></dd> |
| 117 | <dt><span class="section"><a href="boost_config/rationale.html">Rationale</a></span></dt> |
| 118 | <dd><dl> |
| 119 | <dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_problem">The problem</a></span></dt> |
| 120 | <dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_solution">The solution</a></span></dt> |
| 121 | </dl></dd> |
| 122 | <dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt> |
| 123 | </dl> |
| 124 | </div> |
| 125 | <div class="section"> |
| 126 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
| 127 | <a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring |
| 128 | Boost for Your Platform</a> |
| 129 | </h2></div></div></div> |
| 130 | <div class="toc"><dl> |
| 131 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using |
| 132 | the default boost configuration</a></span></dt> |
| 133 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The |
| 134 | <boost/config.hpp> header</a></span></dt> |
| 135 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using |
| 136 | the configure script</a></span></dt> |
| 137 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User |
| 138 | settable options</a></span></dt> |
| 139 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced |
| 140 | configuration usage</a></span></dt> |
| 141 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing |
| 142 | the boost configuration</a></span></dt> |
| 143 | </dl></div> |
| 144 | <div class="section"> |
| 145 | <div class="titlepage"><div><div><h3 class="title"> |
| 146 | <a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using |
| 147 | the default boost configuration</a> |
| 148 | </h3></div></div></div> |
| 149 | <p> |
| 150 | Boost comes already configured for most common compilers and platforms; you |
| 151 | should be able to use boost "as is". Since the compiler is configured |
| 152 | separately from the standard library, the default configuration should work |
| 153 | even if you replace the compiler's standard library with a third-party standard |
| 154 | library (like <a href="http://stlport.sourceforge.net" target="_top">STLport</a>). |
| 155 | </p> |
| 156 | <p> |
| 157 | Using boost "as is" without trying to reconfigure is the recommended |
| 158 | method for using boost. You can, however, run the configure script if you |
| 159 | want to, and there are regression tests provided that allow you to test the |
| 160 | current boost configuration with your particular compiler setup. |
| 161 | </p> |
| 162 | <p> |
| 163 | Boost library users can request support for additional compilers or platforms |
| 164 | by visiting our <a href="https://svn.boost.org/trac/boost/newticket" target="_top">Trac</a> |
| 165 | and submitting a support request. |
| 166 | </p> |
| 167 | </div> |
| 168 | <div class="section"> |
| 169 | <div class="titlepage"><div><div><h3 class="title"> |
| 170 | <a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The <boost/config.hpp> header">The |
| 171 | <boost/config.hpp> header</a> |
| 172 | </h3></div></div></div> |
| 173 | <p> |
| 174 | Boost library implementations access configuration macros via |
| 175 | </p> |
| 176 | <pre class="programlisting"><span class="preprocessor">#include</span> <a href="../../../../boost/config.hpp" target="_top"><boost/config.hpp></a> |
| 177 | </pre> |
| 178 | <p> |
| 179 | While Boost library users are not required to include that file directly, |
| 180 | or use those configuration macros, such use is acceptable. The configuration |
| 181 | macros are documented as to their purpose, usage, and limitations which makes |
| 182 | them usable by both Boost library and user code. |
| 183 | </p> |
| 184 | <p> |
| 185 | Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a> |
| 186 | macros are designed for use by Boost users as well as for our own internal |
| 187 | use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a> |
| 188 | and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed |
| 189 | for internal use by Boost libraries, not user code, so they can change at |
| 190 | any time (though no gratuitous changes are made to them). Boost library problems |
| 191 | resulting from changes to the configuration macros are caught by the Boost |
| 192 | regression tests, so the Boost libraries are updated to account for those |
| 193 | changes. By contrast, Boost library user code can be adversely affected by |
| 194 | changes to the macros without warning. The best way to keep abreast of changes |
| 195 | to the macros used in user code is to monitor the discussions on the Boost |
| 196 | developers list. |
| 197 | </p> |
| 198 | </div> |
| 199 | <div class="section"> |
| 200 | <div class="titlepage"><div><div><h3 class="title"> |
| 201 | <a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a name="config_config_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using |
| 202 | the configure script</a> |
| 203 | </h3></div></div></div> |
| 204 | <div class="important"><table border="0" summary="Important"> |
| 205 | <tr> |
| 206 | <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td> |
| 207 | <th align="left">Important</th> |
| 208 | </tr> |
| 209 | <tr><td align="left" valign="top"><p> |
| 210 | This configure script only sets up the Boost headers for use with a particular |
| 211 | compiler. It has no effect on Boost.Build, or how the libraries are built. |
| 212 | </p></td></tr> |
| 213 | </table></div> |
| 214 | <p> |
| 215 | If you know that boost is incorrectly configured for your particular setup, |
| 216 | and you are on a UNIX like platform, then you may want to try and improve |
| 217 | things by running the boost configure script. From a shell command prompt |
| 218 | you will need to cd into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> |
| 219 | and type: |
| 220 | </p> |
| 221 | <div class="blockquote"><blockquote class="blockquote"><p> |
| 222 | <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code> |
| 223 | </p></blockquote></div> |
| 224 | <p> |
| 225 | you will see a list of the items being checked as the script works its way |
| 226 | through the regression tests. Note that the configure script only really |
| 227 | auto-detects your compiler if it's called g++, c++ or CC. If you are using |
| 228 | some other compiler you will need to set one or more of the following environment |
| 229 | variables: |
| 230 | </p> |
| 231 | <div class="informaltable"><table class="table"> |
| 232 | <colgroup> |
| 233 | <col> |
| 234 | <col> |
| 235 | </colgroup> |
| 236 | <thead><tr> |
| 237 | <th> |
| 238 | <p> |
| 239 | Variable |
| 240 | </p> |
| 241 | </th> |
| 242 | <th> |
| 243 | <p> |
| 244 | Description |
| 245 | </p> |
| 246 | </th> |
| 247 | </tr></thead> |
| 248 | <tbody> |
| 249 | <tr> |
| 250 | <td> |
| 251 | <p> |
| 252 | CXX |
| 253 | </p> |
| 254 | </td> |
| 255 | <td> |
| 256 | <p> |
| 257 | The name of the compiler, for example <code class="computeroutput"><span class="identifier">c</span><span class="special">++</span></code>. |
| 258 | </p> |
| 259 | </td> |
| 260 | </tr> |
| 261 | <tr> |
| 262 | <td> |
| 263 | <p> |
| 264 | CXXFLAGS |
| 265 | </p> |
| 266 | </td> |
| 267 | <td> |
| 268 | <p> |
| 269 | The compiler flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">O2</span></code>. |
| 270 | </p> |
| 271 | </td> |
| 272 | </tr> |
| 273 | <tr> |
| 274 | <td> |
| 275 | <p> |
| 276 | LDFLAGS |
| 277 | </p> |
| 278 | </td> |
| 279 | <td> |
| 280 | <p> |
| 281 | The linker flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">L</span><span class="special">/</span><span class="identifier">mypath</span></code>. |
| 282 | </p> |
| 283 | </td> |
| 284 | </tr> |
| 285 | <tr> |
| 286 | <td> |
| 287 | <p> |
| 288 | LIBS |
| 289 | </p> |
| 290 | </td> |
| 291 | <td> |
| 292 | <p> |
| 293 | Any libraries to link in, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">lpthread</span></code>. |
| 294 | </p> |
| 295 | </td> |
| 296 | </tr> |
| 297 | </tbody> |
| 298 | </table></div> |
| 299 | <p> |
| 300 | For example to run the configure script with HP aCC, you might use something |
| 301 | like: |
| 302 | </p> |
| 303 | <pre class="programlisting"><span class="keyword">export</span> <span class="identifier">CXX</span><span class="special">=</span><span class="string">"aCC"</span> |
| 304 | <span class="keyword">export</span> <span class="identifier">CXXFLAGS</span><span class="special">=</span><span class="string">"-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \ |
| 305 | -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"</span> |
| 306 | <span class="keyword">export</span> <span class="identifier">LDFLAGS</span><span class="special">=</span><span class="string">"-DAportable"</span> |
| 307 | <span class="keyword">export</span> <span class="identifier">LIBS</span><span class="special">=</span><span class="string">"-lpthread"</span> |
| 308 | <span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span> |
| 309 | </pre> |
| 310 | <p> |
| 311 | However you run the configure script, when it finishes you will find a new |
| 312 | header -<code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code>- located in the <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> |
| 313 | directory. <span class="bold"><strong>Note that configure does not install this |
| 314 | header into your boost include path by default</strong></span>. This header contains |
| 315 | all the options generated by the configure script, plus a header-section |
| 316 | that contains the user settable options from the default version of <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> |
| 317 | (located under <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>). |
| 318 | There are two ways you can use this header: |
| 319 | </p> |
| 320 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
| 321 | <li class="listitem"> |
| 322 | <span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp |
| 323 | provided by boost. This option allows only one configure-generated setup; |
| 324 | boost developers should avoid this option, as it incurs the danger of |
| 325 | accidentally committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> |
| 326 | to the svn repository (something you will not be thanked for!). |
| 327 | </li> |
| 328 | <li class="listitem"> |
| 329 | <span class="bold"><strong>Option 2:</strong></span> give the header a more memorable |
| 330 | name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For |
| 331 | example create a new sub-directory <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example |
| 332 | as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command |
| 333 | line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"<boost/config/user/multithread-gcc-config.hpp>"</span></code>, |
| 334 | and boost will use the new configuration header. This option allows you |
| 335 | to generate more than one configuration header, and to keep them separate |
| 336 | from the boost source - so that updates to the source do not interfere |
| 337 | with your configuration. |
| 338 | </li> |
| 339 | </ul></div> |
| 340 | </div> |
| 341 | <div class="section"> |
| 342 | <div class="titlepage"><div><div><h3 class="title"> |
| 343 | <a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a name="config_user_settable"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User |
| 344 | settable options</a> |
| 345 | </h3></div></div></div> |
| 346 | <p> |
| 347 | There are some configuration-options that represent user choices, rather |
| 348 | than compiler defects or platform specific options. These are listed in |
| 349 | <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> |
| 350 | and at the start of a configure-generated <code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code> header. |
| 351 | You can define these on the command line, or by editing <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, they are listed in the following table: |
| 352 | </p> |
| 353 | <div class="informaltable"><table class="table"> |
| 354 | <colgroup> |
| 355 | <col> |
| 356 | <col> |
| 357 | </colgroup> |
| 358 | <thead><tr> |
| 359 | <th> |
| 360 | <p> |
| 361 | Macro |
| 362 | </p> |
| 363 | </th> |
| 364 | <th> |
| 365 | <p> |
| 366 | Description |
| 367 | </p> |
| 368 | </th> |
| 369 | </tr></thead> |
| 370 | <tbody> |
| 371 | <tr> |
| 372 | <td> |
| 373 | <p> |
| 374 | <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> |
| 375 | </p> |
| 376 | </td> |
| 377 | <td> |
| 378 | <p> |
| 379 | When defined, it should point to the name of the user configuration |
| 380 | file to include prior to any boost configuration files. When not |
| 381 | defined, defaults to <a href="../../../../boost/config/user.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. |
| 382 | </p> |
| 383 | </td> |
| 384 | </tr> |
| 385 | <tr> |
| 386 | <td> |
| 387 | <p> |
| 388 | <code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code> |
| 389 | </p> |
| 390 | </td> |
| 391 | <td> |
| 392 | <p> |
| 393 | When defined, it should point to the name of the compiler configuration |
| 394 | file to use. Defining this cuts out the compiler selection logic, |
| 395 | and eliminates the dependency on the header containing that logic. |
| 396 | For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG |
| 397 | to <a href="../../../../boost/config/compiler/gcc.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">gcc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. |
| 398 | </p> |
| 399 | </td> |
| 400 | </tr> |
| 401 | <tr> |
| 402 | <td> |
| 403 | <p> |
| 404 | <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code> |
| 405 | </p> |
| 406 | </td> |
| 407 | <td> |
| 408 | <p> |
| 409 | When defined, it should point to the name of the standard library |
| 410 | configuration file to use. Defining this cuts out the standard |
| 411 | library selection logic, and eliminates the dependency on the header |
| 412 | containing that logic. For example if you are using STLport, then |
| 413 | you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code> |
| 414 | to <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. |
| 415 | </p> |
| 416 | </td> |
| 417 | </tr> |
| 418 | <tr> |
| 419 | <td> |
| 420 | <p> |
| 421 | <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code> |
| 422 | </p> |
| 423 | </td> |
| 424 | <td> |
| 425 | <p> |
| 426 | When defined, it should point to the name of the platform configuration |
| 427 | file to use. Defining this cuts out the platform selection logic, |
| 428 | and eliminates the dependency on the header containing that logic. |
| 429 | For example if you are compiling on linux, then you could define |
| 430 | <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code> |
| 431 | to <a href="../../../../boost/config/platform/linux.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">linux</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. |
| 432 | </p> |
| 433 | </td> |
| 434 | </tr> |
| 435 | <tr> |
| 436 | <td> |
| 437 | <p> |
| 438 | <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code> |
| 439 | </p> |
| 440 | </td> |
| 441 | <td> |
| 442 | <p> |
| 443 | When defined, no compiler configuration file is selected or included, |
| 444 | define when the compiler is fully conformant with the standard, |
| 445 | or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), |
| 446 | has had any options necessary added to it, for example by an autoconf |
| 447 | generated configure script. |
| 448 | </p> |
| 449 | </td> |
| 450 | </tr> |
| 451 | <tr> |
| 452 | <td> |
| 453 | <p> |
| 454 | <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code> |
| 455 | </p> |
| 456 | </td> |
| 457 | <td> |
| 458 | <p> |
| 459 | When defined, no standard library configuration file is selected |
| 460 | or included, define when the standard library is fully conformant |
| 461 | with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any |
| 462 | options necessary added to it, for example by an autoconf generated |
| 463 | configure script. |
| 464 | </p> |
| 465 | </td> |
| 466 | </tr> |
| 467 | <tr> |
| 468 | <td> |
| 469 | <p> |
| 470 | <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code> |
| 471 | </p> |
| 472 | </td> |
| 473 | <td> |
| 474 | <p> |
| 475 | When defined, no platform configuration file is selected or included, |
| 476 | define when the platform is fully conformant with the standard |
| 477 | (and has no useful extra features), or where the user header (see |
| 478 | <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), |
| 479 | has had any options necessary added to it, for example by an autoconf |
| 480 | generated configure script. |
| 481 | </p> |
| 482 | </td> |
| 483 | </tr> |
| 484 | <tr> |
| 485 | <td> |
| 486 | <p> |
| 487 | <code class="computeroutput"><span class="identifier">BOOST_NO_CONFIG</span></code> |
| 488 | </p> |
| 489 | </td> |
| 490 | <td> |
| 491 | <p> |
| 492 | Equivalent to defining all of <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>, |
| 493 | <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code> |
| 494 | and <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>. |
| 495 | </p> |
| 496 | </td> |
| 497 | </tr> |
| 498 | <tr> |
| 499 | <td> |
| 500 | <p> |
| 501 | <code class="computeroutput"><span class="identifier">BOOST_STRICT_CONFIG</span></code> |
| 502 | </p> |
| 503 | </td> |
| 504 | <td> |
| 505 | <p> |
| 506 | The normal behavior for compiler versions that are newer than the |
| 507 | last known version, is to assume that they have all the same defects |
| 508 | as the last known version. By setting this define, then compiler |
| 509 | versions that are newer than the last known version are assumed |
| 510 | to be fully conforming with the standard. This is probably most |
| 511 | useful for boost developers or testers, and for those who want |
| 512 | to use boost to test beta compiler versions. |
| 513 | </p> |
| 514 | </td> |
| 515 | </tr> |
| 516 | <tr> |
| 517 | <td> |
| 518 | <p> |
| 519 | <code class="computeroutput"><span class="identifier">BOOST_ASSERT_CONFIG</span></code> |
| 520 | </p> |
| 521 | </td> |
| 522 | <td> |
| 523 | <p> |
| 524 | When this flag is set, if the config finds anything unknown, then |
| 525 | it will stop with a #error rather than continue. Boost regression |
| 526 | testers should set this define, as should anyone who wants to quickly |
| 527 | check whether boost is supported on their platform. |
| 528 | </p> |
| 529 | </td> |
| 530 | </tr> |
| 531 | <tr> |
| 532 | <td> |
| 533 | <p> |
| 534 | <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> |
| 535 | </p> |
| 536 | </td> |
| 537 | <td> |
| 538 | <p> |
| 539 | When defined, disables threading support, even if the compiler |
| 540 | in its current translation mode supports multiple threads. |
| 541 | </p> |
| 542 | </td> |
| 543 | </tr> |
| 544 | <tr> |
| 545 | <td> |
| 546 | <p> |
| 547 | <code class="computeroutput"><span class="identifier">BOOST_DISABLE_WIN32</span></code> |
| 548 | </p> |
| 549 | </td> |
| 550 | <td> |
| 551 | <p> |
| 552 | When defined, disables the use of Win32 specific API's, even when |
| 553 | these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless |
| 554 | <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code> |
| 555 | is set. This option may be set automatically by the config system |
| 556 | when it detects that the compiler is in "strict mode". |
| 557 | </p> |
| 558 | </td> |
| 559 | </tr> |
| 560 | <tr> |
| 561 | <td> |
| 562 | <p> |
| 563 | <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code> |
| 564 | </p> |
| 565 | </td> |
| 566 | <td> |
| 567 | <p> |
| 568 | Stops boost headers from including any prefix/suffix headers that |
| 569 | normally control things like struct packing and alignment. |
| 570 | </p> |
| 571 | </td> |
| 572 | </tr> |
| 573 | <tr> |
| 574 | <td> |
| 575 | <p> |
| 576 | <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code> |
| 577 | </p> |
| 578 | </td> |
| 579 | <td> |
| 580 | <p> |
| 581 | A prefix header to include in place of whatever boost.config would |
| 582 | normally select, any replacement should set up struct packing and |
| 583 | alignment options as required. |
| 584 | </p> |
| 585 | </td> |
| 586 | </tr> |
| 587 | <tr> |
| 588 | <td> |
| 589 | <p> |
| 590 | <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code> |
| 591 | </p> |
| 592 | </td> |
| 593 | <td> |
| 594 | <p> |
| 595 | A suffix header to include in place of whatever boost.config would |
| 596 | normally select, any replacement should undo the effects of the |
| 597 | prefix header. |
| 598 | </p> |
| 599 | </td> |
| 600 | </tr> |
| 601 | <tr> |
| 602 | <td> |
| 603 | <p> |
| 604 | <code class="computeroutput"><span class="identifier">BOOST_ALL_DYN_LINK</span></code> |
| 605 | </p> |
| 606 | </td> |
| 607 | <td> |
| 608 | <p> |
| 609 | Forces all libraries that have separate source, to be linked as |
| 610 | dll's rather than static libraries on Microsoft Windows (this macro |
| 611 | is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler |
| 612 | knows which symbols to look for in a dll rather than in a static |
| 613 | library). Note that there may be some libraries that can only be |
| 614 | statically linked (Boost.Test for example) and others which may |
| 615 | only be dynamically linked (Boost.Thread for example), in these |
| 616 | cases this macro has no effect. |
| 617 | </p> |
| 618 | </td> |
| 619 | </tr> |
| 620 | <tr> |
| 621 | <td> |
| 622 | <p> |
| 623 | <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_DYN_LINK</span></code> |
| 624 | </p> |
| 625 | </td> |
| 626 | <td> |
| 627 | <p> |
| 628 | Forces library "whatever" to be linked as a dll rather |
| 629 | than a static library on Microsoft Windows: replace the <span class="emphasis"><em>WHATEVER</em></span> |
| 630 | part of the macro name with the name of the library that you want |
| 631 | to dynamically link to, for example use <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_DYN_LINK</span></code> |
| 632 | or <code class="computeroutput"><span class="identifier">BOOST_REGEX_DYN_LINK</span></code> |
| 633 | etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler |
| 634 | knows which symbols to look for in a dll rather than in a static |
| 635 | library). Note that there may be some libraries that can only be |
| 636 | statically linked (Boost.Test for example) and others which may |
| 637 | only be dynamically linked (Boost.Thread for example), in these |
| 638 | cases this macro is unsupported. |
| 639 | </p> |
| 640 | </td> |
| 641 | </tr> |
| 642 | <tr> |
| 643 | <td> |
| 644 | <p> |
| 645 | <code class="computeroutput"><span class="identifier">BOOST_ALL_NO_LIB</span></code> |
| 646 | </p> |
| 647 | </td> |
| 648 | <td> |
| 649 | <p> |
| 650 | Tells the config system not to automatically select which libraries |
| 651 | to link against. Normally if a compiler supports #pragma lib, then |
| 652 | the correct library build variant will be automatically selected |
| 653 | and linked against, simply by the act of including one of that |
| 654 | library's headers. This macro turns that feature off. |
| 655 | </p> |
| 656 | </td> |
| 657 | </tr> |
| 658 | <tr> |
| 659 | <td> |
| 660 | <p> |
| 661 | <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_NO_LIB</span></code> |
| 662 | </p> |
| 663 | </td> |
| 664 | <td> |
| 665 | <p> |
| 666 | Tells the config system not to automatically select which library |
| 667 | to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span> |
| 668 | in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally |
| 669 | if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span> |
| 670 | <span class="identifier">lib</span></code>, then the correct |
| 671 | library build variant will be automatically selected and linked |
| 672 | against, simply by the act of including one of that library's headers. |
| 673 | This macro turns that feature off. |
| 674 | </p> |
| 675 | </td> |
| 676 | </tr> |
| 677 | <tr> |
| 678 | <td> |
| 679 | <p> |
| 680 | <code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code> |
| 681 | </p> |
| 682 | </td> |
| 683 | <td> |
| 684 | <p> |
| 685 | Causes the auto-linking code to output diagnostic messages indicating |
| 686 | the name of the library that is selected for linking. |
| 687 | </p> |
| 688 | </td> |
| 689 | </tr> |
| 690 | <tr> |
| 691 | <td> |
| 692 | <p> |
| 693 | <code class="computeroutput"><span class="identifier">BOOST_LIB_BUILDID</span></code> |
| 694 | </p> |
| 695 | </td> |
| 696 | <td> |
| 697 | <p> |
| 698 | If you built Boost using the <code class="computeroutput"><span class="special">--</span><span class="identifier">buildid</span></code> option then set this |
| 699 | macro to the same value as you passed to bjam. For example if you |
| 700 | built using <code class="computeroutput"><span class="identifier">bjam</span> <span class="identifier">address</span><span class="special">-</span><span class="identifier">model</span><span class="special">=</span><span class="number">64</span> <span class="special">--</span><span class="identifier">buildid</span><span class="special">=</span><span class="identifier">amd64</span></code> then compile your code |
| 701 | with <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_LIB_BUILDID</span><span class="special">=</span><span class="identifier">amd64</span></code> |
| 702 | to ensure the correct libraries are selected at link time. |
| 703 | </p> |
| 704 | </td> |
| 705 | </tr> |
| 706 | <tr> |
| 707 | <td> |
| 708 | <p> |
| 709 | <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code> |
| 710 | </p> |
| 711 | </td> |
| 712 | <td> |
| 713 | <p> |
| 714 | Overrides the name of the toolset part of the name of library being |
| 715 | linked to; note if defined this must be defined to a quoted string |
| 716 | literal, for example "abc". |
| 717 | </p> |
| 718 | </td> |
| 719 | </tr> |
| 720 | </tbody> |
| 721 | </table></div> |
| 722 | </div> |
| 723 | <div class="section"> |
| 724 | <div class="titlepage"><div><div><h3 class="title"> |
| 725 | <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced |
| 726 | configuration usage</a> |
| 727 | </h3></div></div></div> |
| 728 | <div class="toc"><dl> |
| 729 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration">Example |
| 730 | 1: creating our own frozen configuration</a></span></dt> |
| 731 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need">Example |
| 732 | 2: skipping files that you don't need</a></span></dt> |
| 733 | <dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration">Example |
| 734 | 3: using configure script to freeze the boost configuration</a></span></dt> |
| 735 | </dl></div> |
| 736 | <p> |
| 737 | By setting various macros on the compiler command line or by editing <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>, |
| 738 | the boost configuration setup can be optimised in a variety of ways. |
| 739 | </p> |
| 740 | <p> |
| 741 | Boost's configuration is structured so that the user-configuration is included |
| 742 | first (defaulting to <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> |
| 743 | if <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> is not |
| 744 | defined). This sets up any user-defined policies, and gives the user-configuration |
| 745 | a chance to influence what happens next. |
| 746 | </p> |
| 747 | <p> |
| 748 | Next the compiler, standard library, and platform configuration files are |
| 749 | included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code> |
| 750 | etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>), |
| 751 | and if the corresponding macro is undefined then a separate header that detects |
| 752 | which compiler/standard library/platform is in use is included in order to |
| 753 | set these. The config can be told to ignore these headers altogether if the |
| 754 | corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> |
| 755 | macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code> |
| 756 | to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see |
| 757 | user settable macros</a>). |
| 758 | </p> |
| 759 | <p> |
| 760 | Finally the boost configuration header, includes <a href="../../../../boost/config/detail/suffix.hpp" target="_top"><boost/config/detail/suffix.hpp></a>; |
| 761 | this header contains any boiler plate configuration code - for example where |
| 762 | one boost macro being set implies that another must be set also. |
| 763 | </p> |
| 764 | <p> |
| 765 | The following usage examples represent just a few of the possibilities: |
| 766 | </p> |
| 767 | <div class="section"> |
| 768 | <div class="titlepage"><div><div><h4 class="title"> |
| 769 | <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1: creating our own frozen configuration">Example |
| 770 | 1: creating our own frozen configuration</a> |
| 771 | </h4></div></div></div> |
| 772 | <p> |
| 773 | Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0. |
| 774 | Lets suppose also that we don't intend to update our compiler or standard |
| 775 | library any time soon. In order to avoid breaking dependencies when we |
| 776 | update boost, we may want to "freeze" our configuration headers, |
| 777 | so that we only have to rebuild our project if the boost code itself has |
| 778 | changed, and not because the boost config has been updated for more recent |
| 779 | versions of Visual C++ or STLport. We'll start by realising that the configuration |
| 780 | files in use are: <a href="../../../../boost/config/compiler/visualc.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">visualc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the compiler, <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the standard library, and |
| 781 | <a href="../../../../boost/config/platform/win32.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">win32</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the platform. Next we'll |
| 782 | create our own private configuration directory: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">mysetup</span><span class="special">/</span></code>, and copy the configuration files into |
| 783 | there. Finally, open up <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> |
| 784 | and edit the following defines: |
| 785 | </p> |
| 786 | <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COMPILER_CONFIG</span> <span class="string">"boost/config/mysetup/visualc.hpp"</span> |
| 787 | <span class="preprocessor">#define</span> <span class="identifier">BOOST_STDLIB_CONFIG</span> <span class="string">"boost/config/mysetup/stlport.hpp"</span> |
| 788 | <span class="preprocessor">#define</span> <span class="identifier">BOOST_USER_CONFIG</span> <span class="string">"boost/config/mysetup/win32.hpp"</span> |
| 789 | </pre> |
| 790 | <p> |
| 791 | Now when you use boost, its configuration header will go straight to our |
| 792 | "frozen" versions, and ignore the default versions, you will |
| 793 | now be insulated from any configuration changes when you update boost. |
| 794 | This technique is also useful if you want to modify some of the boost configuration |
| 795 | files; for example if you are working with a beta compiler release not |
| 796 | yet supported by boost. |
| 797 | </p> |
| 798 | </div> |
| 799 | <div class="section"> |
| 800 | <div class="titlepage"><div><div><h4 class="title"> |
| 801 | <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example |
| 802 | 2: skipping files that you don't need</a> |
| 803 | </h4></div></div></div> |
| 804 | <p> |
| 805 | Lets suppose that you're using boost with a compiler that is fully conformant |
| 806 | with the standard; you're not interested in the fact that older versions |
| 807 | of your compiler may have had bugs, because you know that your current |
| 808 | version does not need any configuration macros setting. In a case like |
| 809 | this, you can define <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code> |
| 810 | either on the command line, or in <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>, |
| 811 | and miss out the compiler configuration header altogether (actually you |
| 812 | miss out two headers, one which works out what the compiler is, and one |
| 813 | that configures boost for it). This has two consequences: the first is |
| 814 | that less code has to be compiled, and the second that you have removed |
| 815 | a dependency on two boost headers. |
| 816 | </p> |
| 817 | </div> |
| 818 | <div class="section"> |
| 819 | <div class="titlepage"><div><div><h4 class="title"> |
| 820 | <a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example |
| 821 | 3: using configure script to freeze the boost configuration</a> |
| 822 | </h4></div></div></div> |
| 823 | <p> |
| 824 | If you are working on a unix-like platform then you can use the configure |
| 825 | script to generate a "frozen" configuration based on your current |
| 826 | compiler setup - <a class="link" href="index.html#config_config_script">see using the configure |
| 827 | script for more details</a>. |
| 828 | </p> |
| 829 | </div> |
| 830 | </div> |
| 831 | <div class="section"> |
| 832 | <div class="titlepage"><div><div><h3 class="title"> |
| 833 | <a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing |
| 834 | the boost configuration</a> |
| 835 | </h3></div></div></div> |
| 836 | <p> |
| 837 | The boost configuration library provides a full set of regression test programs |
| 838 | under the <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> |
| 839 | <code class="computeroutput"><span class="identifier">test</span><span class="special">/</span></code> |
| 840 | sub-directory: |
| 841 | </p> |
| 842 | <div class="informaltable"><table class="table"> |
| 843 | <colgroup> |
| 844 | <col> |
| 845 | <col> |
| 846 | </colgroup> |
| 847 | <thead><tr> |
| 848 | <th> |
| 849 | <p> |
| 850 | File |
| 851 | </p> |
| 852 | </th> |
| 853 | <th> |
| 854 | <p> |
| 855 | Description |
| 856 | </p> |
| 857 | </th> |
| 858 | </tr></thead> |
| 859 | <tbody> |
| 860 | <tr> |
| 861 | <td> |
| 862 | <p> |
| 863 | <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 864 | </p> |
| 865 | </td> |
| 866 | <td> |
| 867 | <p> |
| 868 | Prints out a detailed description of your compiler/standard library/platform |
| 869 | setup, plus your current boost configuration. The information provided |
| 870 | by this program is useful in setting up the boost configuration |
| 871 | files. If you report that boost is incorrectly configured for your |
| 872 | compiler/library/platform then please include the output from this |
| 873 | program when reporting the changes required. |
| 874 | </p> |
| 875 | </td> |
| 876 | </tr> |
| 877 | <tr> |
| 878 | <td> |
| 879 | <p> |
| 880 | <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 881 | </p> |
| 882 | </td> |
| 883 | <td> |
| 884 | <p> |
| 885 | A monolithic test program that includes most of the individual |
| 886 | test cases. This provides a quick check to see if boost is correctly |
| 887 | configured for your compiler/library/platform. |
| 888 | </p> |
| 889 | </td> |
| 890 | </tr> |
| 891 | <tr> |
| 892 | <td> |
| 893 | <p> |
| 894 | <code class="computeroutput"><span class="identifier">limits_test</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 895 | </p> |
| 896 | </td> |
| 897 | <td> |
| 898 | <p> |
| 899 | Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> |
| 900 | implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined). |
| 901 | This test file fails with most versions of numeric_limits, mainly |
| 902 | due to the way that some compilers treat NAN's and infinity. |
| 903 | </p> |
| 904 | </td> |
| 905 | </tr> |
| 906 | <tr> |
| 907 | <td> |
| 908 | <p> |
| 909 | <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 910 | </p> |
| 911 | </td> |
| 912 | <td> |
| 913 | <p> |
| 914 | Individual compiler defect test files. Each of these should compile, |
| 915 | if one does not then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> |
| 916 | macro needs to be defined - see each test file for specific details. |
| 917 | </p> |
| 918 | </td> |
| 919 | </tr> |
| 920 | <tr> |
| 921 | <td> |
| 922 | <p> |
| 923 | <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 924 | </p> |
| 925 | </td> |
| 926 | <td> |
| 927 | <p> |
| 928 | Individual compiler defect test files. Each of these should not |
| 929 | compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> |
| 930 | macro is defined when it need not be - see each test file for specific |
| 931 | details. |
| 932 | </p> |
| 933 | </td> |
| 934 | </tr> |
| 935 | <tr> |
| 936 | <td> |
| 937 | <p> |
| 938 | <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 939 | </p> |
| 940 | </td> |
| 941 | <td> |
| 942 | <p> |
| 943 | Individual feature test files. If one of these does not compile |
| 944 | then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code> |
| 945 | macro is defined when it should not be - see each test file for |
| 946 | specific details. |
| 947 | </p> |
| 948 | </td> |
| 949 | </tr> |
| 950 | <tr> |
| 951 | <td> |
| 952 | <p> |
| 953 | <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code> |
| 954 | </p> |
| 955 | </td> |
| 956 | <td> |
| 957 | <p> |
| 958 | Individual feature test files. If one of these does compile then |
| 959 | the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code> |
| 960 | macro can be safely defined - see each test file for specific details. |
| 961 | </p> |
| 962 | </td> |
| 963 | </tr> |
| 964 | </tbody> |
| 965 | </table></div> |
| 966 | <p> |
| 967 | Although you can run the configuration regression tests as individual test |
| 968 | files, there are rather a lot of them, so there are a couple of shortcuts |
| 969 | to help you out: |
| 970 | </p> |
| 971 | <p> |
| 972 | If you have built the <a href="../../../../tools/regression/doc/index.html" target="_top">boost |
| 973 | regression test driver</a>, then you can use this to produce a nice html |
| 974 | formatted report of the results using the supplied test file. |
| 975 | </p> |
| 976 | <p> |
| 977 | Alternatively you can run the configure script like this: |
| 978 | </p> |
| 979 | <div class="blockquote"><blockquote class="blockquote"><p> |
| 980 | <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span> |
| 981 | <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code> |
| 982 | </p></blockquote></div> |
| 983 | <p> |
| 984 | in which case the script will test the current configuration rather than |
| 985 | creating a new one from scratch. |
| 986 | </p> |
| 987 | <p> |
| 988 | If you are reporting the results of these tests for a new platform/library/compiler |
| 989 | then please include a log of the full compiler output, the output from <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>, and the pass/fail test results. |
| 990 | </p> |
| 991 | </div> |
| 992 | </div> |
| 993 | </div> |
| 994 | <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> |
| 995 | <td align="left"><p><small>Last revised: April 18, 2018 at 18:30:02 GMT</small></p></td> |
| 996 | <td align="right"><div class="copyright-footer"></div></td> |
| 997 | </tr></table> |
| 998 | <hr> |
| 999 | <div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div> |
| 1000 | </body> |
| 1001 | </html> |