123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- [/
- 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.
- Unlike some other template libraries, this library consists of a mixture of
- template code (in the headers) and static code and data (in cpp files).
- Consequently it is necessary to build the library's support code into a
- library or archive file before you can use it, instructions for specific
- platforms are as follows:
- [h4 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]
|