| [/ |
| Copyright 2006-2007 John Maddock. |
| 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). |
| ] |
| |
| [section:install Building and Installing the Library] |
| |
| When you extract the library from its zip file, you must preserve its internal |
| directory structure (for example by using the -d option when extracting). If you |
| didn't do that when extracting, then you'd better stop reading this, delete the |
| files you just extracted, and try again! |
| |
| This library should not need configuring before use; most popular compilers\/standard |
| libraries\/platforms are already supported "as is". If you do experience configuration |
| problems, or just want to test the configuration with your compiler, then the |
| process is the same as for all of boost; see the |
| [@../../../config/index.html configuration library documentation]. |
| |
| The library will encase all code inside namespace boost. |
| |
| This is a header only library provided your compiler supports C++11 or later. Support for |
| C++03 compilers is still present, but is now deprecated and may be removed without further notice! |
| |
| The only people that still need to build the external libboost_regex library are those that are either: |
| |
| * Using the library in C++03 mode, or, |
| * Using the deprecated POSIX C API's |
| |
| Further, this library may now be used in "standalone" mode without the rest of the Boost C++ libraries, |
| in order to do this you must either: |
| |
| * Have a C++17 compiler that supports `__has_include`, in this case if `<boost/config.hpp>` is not present |
| then the library will automoatically enter standalone mode. Or: |
| * Define BOOST_REGEX_STANDALONE when building. |
| |
| [h4 [*C++03 users only (Deprecated)] Building with bjam] |
| |
| This is now the preferred method for building and installing this library, |
| please refer to the |
| [@../../../../more/getting_started.html getting started guide] for more information. |
| |
| [h4 Building With Unicode and ICU Support] |
| |
| Boost.Regex is now capable of performing a configuration check |
| to test whether ICU is already installed in your compiler's |
| search paths. When you build you should see a message like |
| this: |
| |
| Performing configuration checks |
| |
| - has_icu builds : yes |
| |
| Which means that ICU has been found, and support for it will be enabled |
| in the library build. |
| |
| [tip If you don't want the regex library to use ICU then build with the |
| "--disable-icu" command line option.] |
| |
| If instead you see: |
| |
| Performing configuration checks |
| |
| - has_icu builds : no |
| |
| Then ICU was not found and support for it will not be compiled into the library. |
| If you think that it should have been found, then you will need to take a look |
| at the contents of the file ['boost-root/bin.v2/config.log] for the actual error |
| messages obtained when the build carried out the configuration check. You will |
| then need to fix these errors by ensuring your compiler gets invoked with the correct |
| options. The main options that you're likely to pass to `b2` are: |
| |
| [table |
| [[Option][Description]] |
| [[include=/some/path][Adds "/some/path" to the list of paths seached for include files, normally equivalent to `-I/some/path` on most compilers.]] |
| [[library-path=/some/path][Adds "/some/path" to the list of paths searched for external libraries, set this to the location of the ICU binaries if they're in a non-standard location.]] |
| [[-sICU_ICUUC_NAME=NAME][If `libicuuc` has a non-standard name then this sets the name of the library linked against, defaults to either `icuuc`, `icuucd`, `sicuuc` or `sicuucd` depending on build options.]] |
| [[-sICU_ICUDT_NAME=NAME][If `libicudata` has a non-standard name then this sets the name of the library linked against, defaults to either `icudt`, `icudata`, `sicudt` or `sicudata` depending on build options and platform.]] |
| [[-sICU_ICUIN_NAME=NAME][If `libicui18n` has a non-standatd name then this sets the name of the library linked against, defaults to either `icui18n`, `icuin`, `icuind`, sicuin` or `sicuins` depending on build options and platform.]] |
| [[cxxstd=XX][Sets the C++ standard supported: XX should be either 03, 11, 14, 17 or 2a.]] |
| [[cxxflags="FLAGS"][Passes "FLAGS" directly to the compiler, an option of last resort!]] |
| [[linflags="FLAGS"][Passes "FLAGS" directly to the compiler on the link step, an option of last resort!]] |
| ] |
| |
| [important Configuration results are cached - if you try rebuilding with different compiler |
| options then add an "-a" to the bjam command line to force all targets to be rebuilt.] |
| |
| [important ICU is a C++ library just like Boost is, as such your copy of |
| ICU must have been built with the same C++ compiler (and compiler version) |
| that you are using to build Boost. Boost.Regex will not work correctly unless |
| you ensure that this is the case: it is up to you to ensure that the version |
| of ICU you are using is binary compatible with the toolset you use to build Boost.] |
| |
| And finally, if you want to build/test with multiple compiler versions, all with different ICU |
| builds, then the only way to achieve that currently is to modify your user-config.jam so that |
| each toolset has the necessary compiler/linker options set so that ICU is found automatically |
| by the configuration step (providing the ICU binaries use the standard names, all you have to |
| add is the appropriate header-include and linker-search paths). |
| |
| [h4 Building from Source] |
| |
| The Regex library is "just a bunch of source files": nothing special is required to build them. |
| |
| You can either build the files under boost-path/libs/regex/src/*.cpp as a library, or add them |
| directly to your project. This is particularly useful if you need to use specific compiler |
| options not supported by the default Boost build. |
| |
| There are two #defines you should be aware of: |
| |
| * BOOST_HAS_ICU should be defined if you want ICU support compiled in. |
| * BOOST_REGEX_DYN_LINK should be defined if you are building a DLL on Windows. |
| |
| [endsect] |
| |