1[/ 2 Copyright 2006-2007 John Maddock. 3 Distributed under the Boost Software License, Version 1.0. 4 (See accompanying file LICENSE_1_0.txt or copy at 5 http://www.boost.org/LICENSE_1_0.txt). 6] 7 8[section:install Building and Installing the Library] 9 10When you extract the library from its zip file, you must preserve its internal 11directory structure (for example by using the -d option when extracting). If you 12didn't do that when extracting, then you'd better stop reading this, delete the 13files you just extracted, and try again! 14 15This library should not need configuring before use; most popular compilers\/standard 16libraries\/platforms are already supported "as is". If you do experience configuration 17problems, or just want to test the configuration with your compiler, then the 18process is the same as for all of boost; see the 19[@../../../config/index.html configuration library documentation]. 20 21The library will encase all code inside namespace boost. 22 23Unlike some other template libraries, this library consists of a mixture of 24template code (in the headers) and static code and data (in cpp files). 25Consequently it is necessary to build the library's support code into a 26library or archive file before you can use it, instructions for specific 27platforms are as follows: 28 29[h4 Building with bjam] 30 31This is now the preferred method for building and installing this library, 32please refer to the 33[@../../../../more/getting_started.html getting started guide] for more information. 34 35[h4 Building With Unicode and ICU Support] 36 37Boost.Regex is now capable of performing a configuration check 38to test whether ICU is already installed in your compiler's 39search paths. When you build you should see a message like 40this: 41 42 Performing configuration checks 43 44 - has_icu builds : yes 45 46Which means that ICU has been found, and support for it will be enabled 47in the library build. 48 49[tip If you don't want the regex library to use ICU then build with the 50"--disable-icu" command line option.] 51 52If instead you see: 53 54 Performing configuration checks 55 56 - has_icu builds : no 57 58Then ICU was not found and support for it will not be compiled into the library. 59If you think that it should have been found, then you will need to take a look 60at the contents of the file ['boost-root/bin.v2/config.log] for the actual error 61messages obtained when the build carried out the configuration check. You will 62then need to fix these errors by ensuring your compiler gets invoked with the correct 63options. The main options that you're likely to pass to `b2` are: 64 65[table 66[[Option][Description]] 67[[include=/some/path][Adds "/some/path" to the list of paths seached for include files, normally equivalent to `-I/some/path` on most compilers.]] 68[[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.]] 69[[-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.]] 70[[-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.]] 71[[-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.]] 72[[cxxstd=XX][Sets the C++ standard supported: XX should be either 03, 11, 14, 17 or 2a.]] 73[[cxxflags="FLAGS"][Passes "FLAGS" directly to the compiler, an option of last resort!]] 74[[linflags="FLAGS"][Passes "FLAGS" directly to the compiler on the link step, an option of last resort!]] 75] 76 77[important Configuration results are cached - if you try rebuilding with different compiler 78options then add an "-a" to the bjam command line to force all targets to be rebuilt.] 79 80[important ICU is a C++ library just like Boost is, as such your copy of 81ICU must have been built with the same C++ compiler (and compiler version) 82that you are using to build Boost. Boost.Regex will not work correctly unless 83you ensure that this is the case: it is up to you to ensure that the version 84of ICU you are using is binary compatible with the toolset you use to build Boost.] 85 86And finally, if you want to build/test with multiple compiler versions, all with different ICU 87builds, then the only way to achieve that currently is to modify your user-config.jam so that 88each toolset has the necessary compiler/linker options set so that ICU is found automatically 89by the configuration step (providing the ICU binaries use the standard names, all you have to 90add is the appropriate header-include and linker-search paths). 91 92[h4 Building from Source] 93 94The Regex library is "just a bunch of source files": nothing special is required to build them. 95 96You can either build the files under boost-path/libs/regex/src/*.cpp as a library, or add them 97directly to your project. This is particularly useful if you need to use specific compiler 98options not supported by the default Boost build. 99 100There are two #defines you should be aware of: 101 102* BOOST_HAS_ICU should be defined if you want ICU support compiled in. 103* BOOST_REGEX_DYN_LINK should be defined if you are building a DLL on Windows. 104 105[endsect] 106 107