From 07dee9ca25172e0748b9d09abace3115bb4cbd5b Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Thu, 3 Feb 2011 22:35:32 +0100 Subject: [PATCH] Package 1.46.0-beta1 --- boost-1.46.0-cmakeify-more.patch | 21663 +++++++++ ..._1440.patch => boost-1.46.0-cmakeify.patch | 5962 ++- boost-1.46.0-signals-erase.patch | 23 + boost.spec | 41 +- cmakeify_boost_1440_3.patch | 38161 ---------------- sources | 2 +- 6 files changed, 25152 insertions(+), 40700 deletions(-) create mode 100644 boost-1.46.0-cmakeify-more.patch rename cmakeify_boost_1440.patch => boost-1.46.0-cmakeify.patch (63%) create mode 100644 boost-1.46.0-signals-erase.patch delete mode 100644 cmakeify_boost_1440_3.patch diff --git a/boost-1.46.0-cmakeify-more.patch b/boost-1.46.0-cmakeify-more.patch new file mode 100644 index 0000000..c08ffab --- /dev/null +++ b/boost-1.46.0-cmakeify-more.patch @@ -0,0 +1,21663 @@ +Двоичные файлы boost-cmake/tools/build/CMake/Boost.bmp и boost-cmake/tools/build/CMake/Boost.bmp различаются +Двоичные файлы boost-cmake/tools/build/CMake/Boost.png и boost-cmake/tools/build/CMake/Boost.png различаются +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/add_boost_library.html boost-cmake/tools/build/CMake/docs/build/html/add_boost_library.html +--- boost-cmake/tools/build/CMake/docs/build/html/add_boost_library.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/add_boost_library.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,156 @@ ++ ++ ++ ++ ++ ++ ++ Adding a Library Project — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Building individual libraries with cmake

++

Next topic

++

Adding a Compiled Library to CMake

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Adding a Library Project

++

This page describes how to introduce a new Boost library project into ++the CMake-based build system. Any Boost library that provides a ++library binary (e.g., boost_signals.dll) or has regression tests ++(hopefully, every Boost library!) will need to be part of the build ++system.

++

To introduce a new library, which resides in the subdirectory ++libs/libname, follow these steps:

++
    ++
  1. Create a new file libs/libname/CMakeLists.txt with your ++favorite text editor. This file will contain an invocation of the ++boost_library_project, which ++identifies each Boost library to the build system. The invocation ++of the boost_library_project will look like this:

    ++
    boost_library_project(
    ++  Libname
    ++  SRCDIRS src
    ++  TESTDIRS test
    ++  EXAMPLEDIRS test
    ++  )
    ++
    ++

    where Libname is the properly-capitalization library name, ++e.g., Signals or Smart_ptr. The SRCDIRS src line should ++only be present if your Boost library actually needs to compile a ++library binary; header-only libraries can skip this step. The ++TESTDIRS test line indicates that the subdirectory test ++contains regression tests for your library. Every Boost library ++should have these.

    ++
  2. ++
  3. Re-run CMake (see Quickstart) to reconfigure the source ++tree, causing CMake to find the new Boost library. CMake can be ++re-run either from the command line (by invoking cmake ++/path/to/boost or ccmake /path/to/boost) or, on Windows, ++using the CMake GUI. Once you have reconfigured and generated new ++makefiles or project files, CMake knows about your library.

    ++
  4. ++
  5. If your library has compiled sources (i.e., it is not a header-only ++library), follow the instructions on Adding a Compiled Library to CMake to ++get CMake building and installing your library.

    ++
  6. ++
  7. If your library has regression tests (it does regression tests, ++right?), follow the instructions on Adding Regression Tests ++to get CMake to build and run regression tests for your library.

    ++
  8. ++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/add_compiled_library.html boost-cmake/tools/build/CMake/docs/build/html/add_compiled_library.html +--- boost-cmake/tools/build/CMake/docs/build/html/add_compiled_library.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/add_compiled_library.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,329 @@ ++ ++ ++ ++ ++ ++ ++ Adding a Compiled Library to CMake — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Adding a Compiled Library to CMake

++

This page describes how to add a new, compiled library to the ++CMake-based build system. If your library is a “header-only” library, ++and does not require separate compilation of object files into a ++library binary, you can safely skip this step. Before adding compiled ++libraries to CMake, make sure you have already followed the directions ++for boost_library_project, so that the CMake system recognizes your ++Boost library.

++

We will assume that your library resides in the subdirectory ++libs/libname, and that we want to create the compiled library ++boost_libname. We will also assume that the sources for this ++library reside in the subdirectory libs/libname/src. The source ++directory should be listed via SRCDIRS in the use of the ++boost_library_project macro, as described in the previous ++section. Follow these steps to add this new ++library into Boost’s build system. If your library has multiple source ++directories listed after SRCDIRS, follow these steps for each one.

++
    ++
  1. Create a new file libs/libname/src/CMakeLists.txt with your ++favorite text editor. This file will contain build rules for your ++compiled library. In this file, we will create one or more ++invocations of the boost_add_library macro, which adds a ++compiled Boost library to the CMake system. This macro provides the ++name of the library, the source files from which the library will ++be built, and any specific compiler and linker options needed to ++help build the library. Let’s start by adding a simple library with ++a few source files:

    ++
    boost_add_library(libname
    ++   mysrc1.cpp mysrc2.cpp
    ++   )
    ++
    ++

    This invocation will build several variants of the ++boost_libname library from the source files mysrc1.cpp and ++mysrc2.cpp. For example, it will build both static and shared ++library, single- and multi-threaded, debug and release, etc. This ++invocation also handles the installation of these libraries.

    ++
  2. ++
  3. For simple libraries, that’s it! Rebuilding via CMake (e.g., ++running make or reloading and rebuilding the Boost project in ++your IDE) will build the new library, including several different ++variants for different compilation options. Your Boost library will ++also be included when the user installs Boost or builds a binary ++package of Boost. Within the CMake configuration, you will also see ++an option BUILD_LIBNAME, which allows the user to decide ++whether or not to build this Boost library.

    ++
  4. ++
  5. Many libraries will need specific compilation options when ++building, need to link against other libraries (Boost or ++otherwise), or rely on certain features of the compilation process ++to proceed. Follow the instructions in the remaining part of this ++page to address these library-specific needs.

    ++
  6. ++
++
++

Compilation Flags

++

Many libraries require certain compilation flags when we are building ++the library binaries themselves (rather than when the library headers ++are included by the user). For example, we want to define the macro ++BUILDING_BOOST_LIBNAME when building the library. We can do so by ++passing the COMPILE_FLAGS option to boost_add_library:

++
boost_add_library(libname
++    mysrc1.cpp mysrc2.cpp
++    COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1"
++    )
++
++

Now when CMake builds the library, it will pass the flag ++-DBUILDING_BOOST_LIBNAME=1 to the compiler.

++

On Windows, shared libraries are built very differently from static ++libraries. In particular, when building a shared library, one needs to ++be sure to export the right symbols from the DLL using ++dllexport. When users use the shared library, these symbols will be ++imported (via dllimport). The typical way to handle this is to ++define a macro (say, BOOST_LIBNAME_DYN_LINK) when building the ++shared library. This macro instructs the library headers to ++dllexport everything that needs to be exported. We can do this with ++variant-specific compile flags, e.g.,

++
boost_add_library(libname
++    mysrc1.cpp mysrc2.cpp
++    COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1"
++    SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1"
++    )
++
++

When building a shared library, the SHARED_COMPILE_FLAGS options ++will be combined with the COMPILE_FLAGS options. When building a ++static library, the SHARED_COMPILE_FLAGS options will be ++ignored. There are other options that can be specified per-feature, ++such as LINK_FLAGS and LINK_LIBS; refer to the ++boost_add_library reference for more ++information.

++
++
++

Linking to Other Boost Libraries

++

Some Boost libraries depends on other Boost libraries. For example, ++perhaps our library uses the Boost.Filesystem library under the ++hood. We can use the DEPENDS feature of the ++boost_add_library to state which libraries our library ++depends on. In this example, we’ll link against boost_filesystem:

++
boost_add_library(libname
++    mysrc1.cpp mysrc2.cpp
++    COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1"
++    SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1"
++    DEPENDS boost_filesystem
++    )
++
++

Now, each variant of the boost_libname library will link against ++the appropriate boost_filesystem library variant. Whenever ++boost_filesystem changes, our library will be relinked ++appropriately.

++
++
++

Linking External Libraries/Optional Sources

++

Sometimes, Boost libraries need to link against other libraries ++supplied by the system. The primary challenge in linking against these ++libraries is finding those libraries, and their associated headers, ++on the system. If the library is found, we usually want to pass some ++extra compilation flags to our library and add in additional ++sources. Otherwise, we just skip these extra sources.

++

CMake already contains modules that search for many common system ++libraries and tools; search the ++[http://www.cmake.org/HTML/Documentation.html CMake Documentation] for ++existing modules that do what you need. For example, say we want to ++link against the system’s PNG (portable network graphics) library. ++We can use the supplied FindPNG module by adding the following ++early in our CMakeLists.txt file:

++
include(FindPNG)
++
++
++

Documentation for CMake modules is typically found in the module file ++itself. Look into the Modules subdirectory of your CMake ++installation, either in Program Files\CMake (on Windows) or ++/usr/share/cmake-version (on Unix variants) to find the module of ++the same name. The module will typically set a variable that indicates ++whether the library was found. For the FindPNG module, this variable ++is called PNG_FOUND. We can use this variable to optionally add ++sources to a variable EXTRA_SOURCES:

++
include(FindPNG)
++set(EXTRA_SOURCES)
++if (PNG_FOUND)
++  list(APPEND EXTRA_SOURCES png.cpp)
++endif (PNG_FOUND)
++
++

CMake modules also typically define macros specifying the include ++directories needed for the library, any compile-time definitions ++required to use the library, and linking information for the library ++binary. For the FindPNG module, these variables are called ++PNG_INCLUDE_DIR, PNG_DEFINITIONS and PNG_LIBRARY, respectively.

++

The include directory should be added via the CMake ++include_directories macro, e.g.,

++
include_directories(${PNG_INCLUDE_DIR})
++
++

The PNG_DEFINITIONS value should be added to the COMPILE_FLAGS ++and the PNG_LIBRARIES value to the LINK_LIBS option to the ++boost_add_library. Using these features together, we can ++search for the PNG library on the system and optionally include ++PNG support into our library:

++
include(FindPNG)
++set(EXTRA_SOURCES)
++if (PNG_FOUND)
++  include_directories(${PNG_PNG_INCLUDE_DIR})
++  list(APPEND EXTRA_SOURCES png.cpp)
++endif (PNG_FOUND)
++
++boost_add_library(libname
++  mysrc1.cpp mysrc2.cpp
++  ${EXTRA_SOURCES}
++  COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1 ${PNG_DEFINITIONS}"
++  LINK_LIBS "${PNG_LIBRARIES}"
++  SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1"
++  DEPENDS boost_filesystem
++  )
++
++

If CMake does not provide a module to search for the library you need, ++don’t worry! You can write your own module relatively easily, ++following the examples from the CMake Modules directory or some of ++the Boost-specific examples, such as ++http://svn.boost.org/svn/boost/branches/release/tools/build/CMake/FindICU.cmake ++For a real-life example of finding system libraries and using that ++information to add optional, extra capabilities to a Boost library, ++check out the build rules for the Boost.IOStreams library at ++http://svn.boost.org/svn/boost/branches/release/libs/iostreams/src/CMakeLists.txt

++
++
++

Build Variants

++

The Boost build system defines many different Build Variants and Features, which ++describe specific properties of certain builds. For example, the ++SHARED feature indicates that we are building a shared library, ++while the MULTI_THREADED feature indicates that we are building a ++multi-threaded library. A specific set of features is called a ++````variant````, e.g., RELEASE and MULTI_THREADED and ++SHARED. By default, the CMake-based build system builds several ++different variants of each Boost library.

++

Since some features conflict with certain libraries (a threading ++library cannot be SINGLE_THREADED!), one can pass additional flags ++to boost_add_library stating which features should the library ++cannot be built with. For example, say that our library cannot be ++built as a multi-threaded library, because it uses thread-unsafe ++routines from the underlying C library. To disable multi-threaded ++variants of the library, pass the option NOT_MULTI_THREADED:

++
boost_add_library(libname
++    mysrc1.cpp mysrc2.cpp
++    COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1"
++    SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1"
++    DEPENDS boost_filesystem
++    NOT_MULTI_THREADED
++    )
++
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/adding_regression_tests.html boost-cmake/tools/build/CMake/docs/build/html/adding_regression_tests.html +--- boost-cmake/tools/build/CMake/docs/build/html/adding_regression_tests.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/adding_regression_tests.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,211 @@ ++ ++ ++ ++ ++ ++ ++ Adding Regression Tests — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Testing

++

Next topic

++

Building a Binary Installer

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Adding Regression Tests

++

This page describes how to add regression tests for a Boost library in ++the CMake-based build system. Before adding regression tests, make ++sure you have already followed the directions for ++boost_library_project , so that the CMake system ++recognizes your Boost library project, and (if necessary) ++Adding a Compiled Library to CMake. We also assume that you have already ++configured your build tree for regression testing of your library, by ++adding your library project’s name to the BUILD_TESTS option ++described in the section Testing.

++

In this page, we will assume that your library resides in the ++subdirectory libs/libname, and that tests for this library are ++stored in libs/libname/test. The test directory should be listed ++via TESTDIRS in the call of ++boost_library_project. Follow these steps to add this new ++library into Boost’s build system. If your library has multiple ++testing directories listed after TESTDIRS, follow these steps for ++each one.

++
    ++
  1. Create a new file libs/libname/test/CMakeLists.txt file with ++your favorite text editor. This file will contain instructions for ++building and running each of the regression tests for your library.

    ++
  2. ++
  3. If your regression test depends on any other part of boost then ++you will need to inform the build system of such with the ++following line:

    ++
    boost_additional_test_dependencies(libname BOOST_DEPENDS test fusion)
    ++
    ++

    where ‘libname’ is the name of your library that you are testing.

    ++
  4. ++
  5. For each test that only needs to be compiled (but not executed), ++add a compile or compile_fail test using the ++boost_test_compile or boost_test_compile_fail ++macros, respectively. The most basic usage of these macros ++provides only the test name, e.g.,

    ++
    boost_test_compile(compile_test)
    ++boost_test_compile_fail(compile_fail_test)
    ++
    ++
    ++

    This code will create two regression tests. The first, ++compile_test, will try to compile the source file ++compile_test.cpp in the current source directory. If the ++compile is successful, the regression test passes. If the compile ++fails, the regression test fails. The second regression test works ++the opposite way: it will try to compile ++compile_fail_test.cpp: if the compilation is successful, the ++regression test fails. When you run the regression tests (e.g., by ++calling ctest from the build directory), the regression tests ++will execute and produce output like the following:

    ++
    Running tests...
    ++Start processing tests
    ++Test project /Users/dgregor/Projects/boost-darwin
    ++  1/  2 Testing libname::compile_test            Passed
    ++  2/  2 Testing libname::compile_fail_test     ***Failed - supposed to fail
    ++
    ++100% tests passed, 0 tests failed out of 2
    ++
    ++
  6. ++
++
    ++
  1. For any tests that need to be built and executed, use the ++boost_test_run or boost_test_run_fail macros. Both ++tests will build, link and execute a regression test. The ++boost_test_run macro expects that executable to return an ++exit code of zero, while the boost_test_run_fail macro ++expects that executable to return a non-zero exit code. For ++example, we might build a simple test simple_test from the ++source file simple_test.cpp:

    ++
    boost_test_run(simple_test)
    ++
    ++
    ++

    Often, we’ll want to link against our own Boost library, which we ++do using the DEPENDS argument to boost_test_run:

    ++
    boost_test_run(big_test big_test1.cpp big_test2.cpp
    ++  DEPENDS boost_libname-static
    ++  )
    ++
    ++

    Here, we have created a test big_test, built from the source ++files big_test1.cpp and big_test2.cpp, which will link ++against the static library for boost_libname. We could create ++a similar test that links against the shared library for ++boost_libname, passing along compilation flags specific to the ++shared library:

    ++
    boost_test_run(big_test_dll big_test1.cpp big_test2.cpp
    ++  DEPENDS boost_libname-shared
    ++  COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1"
    ++  )
    ++
    ++

    Some tests require command-line arguments. For example, say we ++want to pass -loop 1000 to a randomized test. We can do so ++using the ARGS argument to boost_test_run (or ++boost_test_run_fail):

    ++
    boost_test_run(random_test ARGS "-loop" "1000" DEPENDS boost_libname-static)
    ++
    ++

    Once you have finished describing your regression tests to the ++CMake system, you’re done! Your library will now build, test, and ++install with CMake and this behavior should be portable across ++many different platforms.

    ++
  2. ++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/build_configuration.html boost-cmake/tools/build/CMake/docs/build/html/build_configuration.html +--- boost-cmake/tools/build/CMake/docs/build/html/build_configuration.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/build_configuration.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,369 @@ ++ ++ ++ ++ ++ ++ ++ Configuring the buildspace — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Configuring the buildspace

++
++

Configuration tools

++

Included in the standard cmake distribution are the Windows CMake ++gui and the unix ccmake curses interface, which allow one to ++configure various aspects of the cmake build. On Microsoft Windows ++run the CMake configuration program from the Start menu.

++

Having done the initial configuration step as in Quickstart, ++on unix run:

++
make edit_cache
++
++

in the binary directory. On windows just run the cmake gui and choose ++the binary dir from the pulldown menu. You will be presented with a list of editable build options something ++like this:

++
BOOST_PLATFORM                   linux
++BUILD_BCP                        ON
++BUILD_BOOST_WSERIALIZATION       ON
++BUILD_EXAMPLES                   NONE
++BUILD_INSPECT                    ON
++BUILD_TESTS                      NONE
++CMAKE_BUILD_TYPE                 Release
++CMAKE_INSTALL_PREFIX             /usr/local
++DART_TESTING_TIMEOUT             15
++DEBUG_COMPILE_FLAGS              -g
++DOCBOOK_AUTOCONFIG               OFF
++DOCBOOK_DTD_DIR                  DOCBOOK_DTD_DIR-NOTFOUND
++DOCBOOK_XSL_DIR                  DOCBOOK_XSL_DIR-NOTFOUND
++ENABLE_DEBUG                     ON
++ENABLE_MULTI_THREADED            ON
++ENABLE_RELEASE                   ON
++ENABLE_SHARED                    ON
++ENABLE_SINGLE_THREADED           OFF
++ENABLE_STATIC                    ON
++RELEASE_COMPILE_FLAGS            -O3 -DNDEBUG
++UNZIP                            /usr/bin/unzip
++WINMANGLE_LIBNAMES               OFF
++XSLTPROC                         /usr/bin/xsltproc
++XSLTPROC_FLAGS                   --xinclude
++
++

On windows, the configurables will be right in the middle of the gui; ++can’t miss ‘em. Note the [t] key to toggle ‘advanced mode’ which ++will show more options (on windows this is a selection box that says ++Simple View by default, pull it down to see Advanced and Grouped ++views).

++

Use the arrow keys to select particular options. Press c (for ++(c)onfigure) to perform the preliminary configuration of the CMake ++build system when you are done. When the options you have selected ++have stabilized, CMake will give you the (g)enerate option. If you do ++not see this option, press c again to reconfigure. Try the ++t key to see more options. When you’re done press g to ++generate makefiles and exit.

++

See Build Variants and Features for information about the feature-specific options ++(ie ENABLE_whatever listed above.)

++
++
++
++

CMakeCache.txt

++

The same information is stored in a file CMakeCache.txt located in ++the build directory. For this reason, after you’ve done the initial ++configuration of a build directory you can invoke ccmake like this:

++
ccmake <path-to-build>
++
++

or have the makefiles do it for you:

++
make edit_cache
++
++

The CMakeCache.txt file is hand-editable, though this is usually not ++as convenient as the cmake-supplied configuration tools mentioned ++above. An excerpt of this file:

++
//
++// Enable/Disable color output during build.
++//
++CMAKE_COLOR_MAKEFILE:BOOL=ON
++
++//
++// Mangle lib names for windows, e.g., boost_filesystem-gcc41-1_34
++//
++WINMANGLE_LIBNAMES:BOOL=ON
++
++

On unix, (?windows too?) the generated makefiles will detect if this ++file has been edited and will automatically rerun the makefile ++generation phase. If you should need to trigger this regeneration ++manually you may execute

++
make rebuild_cache
++
++

Deleting the cache

++

You may find yourself wanting to start from scratch, for instance if ++you want to switch from using Visual Studio to using NMake. To do ++this, delete the cache file. On windows, there is a Delete ++Cache option in the CMake gui’s File menu. On unix you can simply ++rm CMakeCache.txt.

++
++

CMAKE_BINARY_DIR

++

This variable is set by cmake and corresponds to the toplevel of your ++build/ directory.

++
++
++

A few useful options

++
++

CMAKE_OSX_ARCHITECTURES

++
++
++
Mac OS X users: to build universal binaries, set this to
++
ppc;i386.
++
++
++
++
++

WINMANGLE_LIBNAMES

++

This option controls whether libraries will be built with mangled-in ++compiler name/version and boost version. For example, with ++BUILD_VERSIONED set to OFF, the signals library looks like ++this:

++
% ls lib/*signals*
++lib/libboost_signals-mt-d.a    lib/libboost_signals-mt.a
++lib/libboost_signals-mt-d.so*  lib/libboost_signals-mt.so*
++
++

But with it on, (on a gcc 4.3 linux box):

++
% ls lib/*signal*
++lib/libboost_signals-gcc43-mt-1_40.a
++lib/libboost_signals-gcc43-mt-d-1_40.a
++lib/libboost_signals-gcc43-mt-1_40.so*
++lib/libboost_signals-gcc43-mt-d-1_40.so*
++
++

Historically this mangling has been convenient for windows users and a ++bane to unix users, thus winmangle_libnames.

++
++

Note

++

The on-disk names of library variants are ++always mangled with the active features. ++WINMANGLED_LIBNAMES affects mangling of compiler and boost ++version only.

++
++
++
++

BUILD_PROJECTS

++

This is a semicolon-separated list of projects to be built, or ++"ALL" (the default) for all projects, or "NONE". Projects not ++appearing in this list (if list not "ALL") are ignored; no targets in ++this project will appear. Example:

++
BUILD_PROJECTS=thread;python
++
++
++

See also the boost_library_project macro.

++
++

Note

++

If you specify a project with link time dependencies on other ++projects, e.g. filesystem, (which depends on system) and ++omit the dependencies, you will get an error from cmake something ++like this:

++
CMake Error at tools/build/CMake/BoostCore.cmake:736 (get_property):
++  get_property could not find TARGET boost_system-mt-shared.  Perhaps it has
++  not yet been created.
++Call Stack (most recent call first):
++  tools/build/CMake/BoostCore.cmake:1170 (boost_library_variant)
++  libs/filesystem/src/CMakeLists.txt:7 (boost_add_library)
++
++
++
++
++

BUILD_EXAMPLES

++

This is a semicolon-separated list of projects whose examples should ++be built, e.g.:

++
BUILD_EXAMPLES="iostreams;accumulators"
++
++
++
++

Warning

++

If you pass this on the commandline in a unix shell, ++don’t forget to quote the list of arguments or escape the ++semicolons...

++
++

Per-library examples are specified with the EXAMPLEDIRS ++argument to the boost_library_project macro.

++

Note:

++

A project’s examples will only be built if the project appears in ++both BUILD_PROJECTS and BUILD_EXAMPLES. I.e., the ++BUILD_PROJECTS filter is applied first, and the BUILD_EXAMPLES ++filter has no ability to reverse the result.

++
++
++

BUILD_TOOLS

++

Similar to BUILD_EXAMPLES and BUILD_PROJECTS above, this is a ++semicolon-separated list of tools (in subdirectory ++$BOOST_ROOT/tools/) that should be built, e.g.:

++
BUILD_TOOLS=quickbook;wave
++
++
++

"ALL" will build all tools, "NONE" will build none. Note that ++the values here are lowercase (only subdirectories of tools/ ++matching one of the strings in the list will be traversed by cmake).

++
++
++

CMAKE_VERBOSE_MAKEFILE

++
++Displays full build commands during build. Good for debugging. ++This option will generate permanently verbose makefiles; it is ++generally easier to invoke make with the option VERBOSE=1 ++instead (this has the same effect, but is not persistent).
++
++
++

CMAKE_CXX_COMPILER

++
++

Sets the compiler. If you have a nonstandard compiler and no ++default compiler, you may have to pass the value of this option on ++the commandline, for example:

++
cmake ../src -DCMAKE_CXX_COMPILER=gcc-4.4
++
++

On windows you can set this in the gui, but you will probably prefer ++to have cmake generate a set of nmake or project files by choosing ++an appropriate generator.

++
++
++
++

BUILD_SOVERSIONED

++

Enables the setting of SOVERSION in built libraries. If ++this is on:

++
% ls -l libboost_thread*.so*
++lrwxrwxrwx 1 troy troy     30 Oct 29 18:37 libboost_thread-mt-d.so -> libboost_thread-mt-d.so.1.41.0*
++-rwxr-xr-x 1 troy troy 571361 Oct 29 18:37 libboost_thread-mt-d.so.1.41.0*
++lrwxrwxrwx 1 troy troy     28 Oct 29 18:37 libboost_thread-mt.so -> libboost_thread-mt.so.1.41.0*
++-rwxr-xr-x 1 troy troy 114963 Oct 29 18:37 libboost_thread-mt.so.1.41.0*
++
++% readelf -a libboost_thread-mt.so | grep SONAME
++ 0x000000000000000e (SONAME)             Library soname: [libboost_thread-mt.so.1.41.0]
++
++

and if off:

++
% ls -l lib/*signals*
++-rwxr-xr-x 1 troy troy  835522 Oct 29 15:10 lib/libboost_signals-mt-d.so*
++-rwxr-xr-x 1 troy troy  121886 Oct 29 15:10 lib/libboost_signals-mt.so*
++
++

(Unix only, ON by default)

++

This setting also determines whether libraries are installed ++with/without soversions. See also INSTALL_VERSIONED.

++
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/.buildinfo boost-cmake/tools/build/CMake/docs/build/html/.buildinfo +--- boost-cmake/tools/build/CMake/docs/build/html/.buildinfo 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/.buildinfo 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,4 @@ ++# Sphinx build info version 1 ++# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. ++config: 8f03172e7d0da74db617946b267b7981 ++tags: fbb0d17656682115ca4d033fb2f83ba1 +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/build_installer.html boost-cmake/tools/build/CMake/docs/build/html/build_installer.html +--- boost-cmake/tools/build/CMake/docs/build/html/build_installer.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/build_installer.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,149 @@ ++ ++ ++ ++ ++ ++ ++ Building a Binary Installer — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Adding Regression Tests

++

Next topic

++

Notes by Boost Version

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Building a Binary Installer

++

CMake can easily build binary installers for a variety of ++platforms. On Windows and Mac OS X, CMake builds graphical ++installation programs. For other Unix operating systems, CMake ++currently builds tarballs and self-installing shell scripts. This ++CMake functionality, provided by the ++CPack program ++that is part of CMake, is used to create all of CMake’s binary ++installers. We use CPack to build binary installers for Boost. To ++build a binary installer for Boost, follow these steps:

++
    ++
  1. Build Boost using CMake. (see Quickstart)
  2. ++
  3. (‘’‘Windows only’‘’) Download and install the Nullsoft Scriptable ++Install System (NSIS), ++which is used to create graphical installers on Windows. Unix users ++do not need to install any extra tools.
  4. ++
  5. Using the same development tools for building Boost, build the ++“package” target to create the binary installers.
      ++
    • With Microsoft Visual Studio, build the target named PACKAGE
    • ++
    • With makefiles, run ` make package``.
    • ++
    ++
  6. ++
++

The output of the packaging process will be one or more binary ++packages of the form Boost-version-platform.*extension*. The ++type of package will differ from one platform to another:

++
    ++
  • On Windows: The primary output is an executable (.exe) that ++provides a graphical installer.
  • ++
  • On Mac OS X: The primary output is a disk image (.dmg) that ++contains a graphical installer package.
  • ++
  • On Unix: Packaging produces compressed tarballs (.tar.gz) and ++a self-installing shell script (.sh)
  • ++
++

Windows installer:

++_images/WindowsInstaller.png ++

Mac installer:

++_images/MacInstaller.png ++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/build_variants.html boost-cmake/tools/build/CMake/docs/build/html/build_variants.html +--- boost-cmake/tools/build/CMake/docs/build/html/build_variants.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/build_variants.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,381 @@ ++ ++ ++ ++ ++ ++ ++ Build Variants and Features — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Build Variants and Features

++

Different compilation and linking flags affect how source code and ++libraries are compiled. Boost’s build system abstracts some of these ++properties into specific features of the build, which indicate (at ++a high level) what options are being used, e.g., multi-threaded, ++release-mode, shared libraries, etc. Each feature brings with it ++certain compilation options (which vary from one compiler to the next) ++that need to be used when building that variant. For example, on Unix ++systems, one often must link against the pthread library for ++multi-threaded programs and libraries, which requires the addition of ++the -lpthread flag to the link line. The ‘’features’’ feature of the ++build system encapsulates this knowledge.

++

A library built with a given set of features is called a library ++variant. For example, we could have a multi-threaded release variant ++of a shared library, which would be built with all of the options ++needed to support multi-threading, optimization, elimination of ++debugging symbols, and for building a shared library. Each variant of ++a library is given a unique name based on the features in that ++variant, so that one can readily identify the library, for example, ++libboost_signals-gcc40-mt-d.so is the multi-threaded, debug version ++of the shared library for Boost.Signals on a typical Linux system. The ++Boost Getting Started guide ++describes the library naming conventions used for the variants.

++

The configuration and build of the library for each feature is ++(dis|en)abled with a boolean option ENABLE_feature, which set ++in CMakeCache.txt. The available features are:

++
++

Name Mangling

++

Libraries have their features mangled in to distinguish the variants ++from one another. CMake’s symbolic target names correspond:

++ ++++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
FeatureTarget NameLibrary Name Component
shared-shared(none)
static-static(none)
multithreaded-mt-mt
release(none)(none)
debug-debug-d
pydebug-pydebug-yd
++

The make target help will show the available options:

++
``make help`` shows a list::
++
++% make help | grep signals
++... boost_signals
++... boost_signals-mt-shared
++... boost_signals-mt-shared-debug
++... boost_signals-mt-static
++... boost_signals-mt-static-debug
++... boost_signals-shared
++... boost_signals-shared-debug
++... boost_signals-static
++... boost_signals-static-debug
++
++

And you can see the correspondence to the libraries on disk:

++
% ls lib/libboost_signals*
++lib/libboost_signals-d.a              lib/libboost_signals-mt.a
++lib/libboost_signals-d.so             lib/libboost_signals-mt.so
++lib/libboost_signals-mt-d.a           lib/libboost_signals.a
++lib/libboost_signals-mt-d.so          lib/libboost_signals.so
++
++

(Note: on most unix you will see more than this, as some of them ++contain version numbers and are symbolic links to one another).

++
++
++

Configuring features

++

You can globally (en|dis)able the build of these various features ++through the following cmake variables:

++
++

ENABLE_STATIC

++
++The STATIC feature identifies static builds of libraries, i.e., a ++.lib (library) file on Microsoft Windows or a .a (archive) file ++on Unix systems.
++
++
++

ENABLE_SHARED

++
++The SHARED feature identifies shared builds of libraries, i.e., ++a .dll (dynamically linked library) file on Microsoft Windows or ++a .so`(shared object) or `.dylib (dynamic library) file on Unix ++systems. In some cases, SHARED variants actually refer to ++“modules”, which are a special kind of shared library on some ++systems (e.g., Mac OS X).
++
++
++

ENABLE_DEBUG

++
++The DEBUG feature identifies builds of libraries that retain ++complete debugging information and prohibit optimization, making ++these builds far easier to use for debugging programs.
++
++
++

ENABLE_RELEASE

++
++The RELEASE feature identifies builds of libraries that use full ++optimization and eliminate extraneous information such as debug ++symbols, resulting in builds of libraries that are typically much ++smaller than (and execute faster than) their debug library ++counterparts.
++
++
++

ENABLE_SINGLE_THREADED

++
++The SINGLE_THREADED feature identifies builds of libraries that ++assume that the program using them is single-threaded. These ++libraries typically avoid costly atomic operations or locks, and ++make use of no multi-threaded features.
++
++
++

ENABLE_MULTI_THREADED

++
++The MULTI_THREADED feature identifies builds of libraries that ++assume that the program using them is multi-threaded. These ++libraries may introduce additional code (relative to their ++single-threaded variants) that improves the behavior of the ++library in a multi-threade context, often at the cost of ++single-thread performance.
++
++
++

ENABLE_STATIC_RUNTIME

++
++The STATIC_RUNTIME feature identifies builds that link against ++the C and C++ run-time libraries statically, which directly ++includes the code from those run-time libraries into the Boost ++library or executable.
++
++
++

ENABLE_DYNAMIC_RUNTIME

++
++The DYNAMIC_RUNTIME feature identifies builds that link against ++the dynamic C and C++ run-time libraries.
++
++
++
++

Per-feature Compilation and Linker Options

++

For each feature above, the Boost build system defines three variables ++used to provide compilation flags, linking flags, and extra libraries ++to link against when using that feature. These flags are automatically ++added to the build commands for variants using that feature. The ++particular flags and libraries are described by the following global ++variables:

++
++

feature_COMPILE_FLAGS

++
++A string containing extra flags that will be added to the compile ++line, including macro definitions and compiler-specific flags ++needed to enable this particular feature.
++
++ ++ ++
++
++

Default Variants

++

By default, Boost’s build system will build every permutation of ++libraries in the feature space

++
++(STATIC or SHARED) x (DEBUG or RELEASE) x ++(SINGLE_THREADED or MULTI_THREADED)
++

resulting in 8 different copies of each library, modulo certain cases ++where variants are disabled [1]. On Windows, where ++the distinction between static and dynamic run-time libraries is very ++important, the default build also creates permutations with ++(STATIC_RUNTIME or DYNAMIC_RUNTIME). Certain non-sensical ++combinations of libraries will automatically be eliminated, e.g., it ++does not generally make sense to create a shared library that links ++against the static C and C++ run-time libraries. However, this still ++means that the default build creates between 8 and 12 different ++variants of each Boost library.

++

Users who only need a few variants of each library can change which ++variants of Boost libraries are build by default using various ++configuration options. For each feature, CMake’s configuration will ++contain an option ENABLE_feature. When the feature is ON, the build ++system will produce variants with that feature. When the feature is ++OFF, the build system will suppress variants with that feature. For ++example, toggling ENABLE_DEBUG to OFF will inhibit the creation of ++the debug variants, drastically improving overall build times.

++

Footnotes

++ ++ ++ ++ ++ ++
[1]For instance, the SINGLE_THREADED variant ++of the boost_thread project is disabled.
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/diff.html boost-cmake/tools/build/CMake/docs/build/html/diff.html +--- boost-cmake/tools/build/CMake/docs/build/html/diff.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/diff.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,618 @@ ++ ++ ++ ++ ++ ++ ++ Differences between this release and upstream — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Hacking Boost.CMake with Git

++

Next topic

++

Building individual libraries with cmake

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Differences between this release and upstream

++

The only differences below should be in the build system... but there ++should be a lot of them. :)

++
% git diff --stat=100,90 Boost_1_41_0
++ .gitignore                                                                            |    8 +
++ CMakeLists.txt                                                                        |  413 ++-
++ CTestConfig.cmake                                                                     |   21 +
++ doc/CMakeLists.txt                                                                    |    9 +
++ doc/src/CMakeLists.txt                                                                |   19 +
++ libs/CMakeLists.txt                                                                   |   99 +
++ libs/accumulators/CMakeLists.txt                                                      |   21 +
++ libs/accumulators/doc/CMakeLists.txt                                                  |    8 +
++ libs/accumulators/example/CMakeLists.txt                                              |    8 +
++ libs/accumulators/module.cmake                                                        |    1 +
++ libs/accumulators/test/CMakeLists.txt                                                 |   82 +
++ libs/algorithm/CMakeLists.txt                                                         |   22 +
++ libs/algorithm/minmax/test/CMakeLists.txt                                             |   10 +
++ libs/algorithm/module.cmake                                                           |    4 +
++ libs/algorithm/string/test/CMakeLists.txt                                             |   18 +
++ libs/any/CMakeLists.txt                                                               |   27 +
++ libs/any/module.cmake                                                                 |    1 +
++ libs/any/test/CMakeLists.txt                                                          |   11 +
++ libs/array/CMakeLists.txt                                                             |   27 +
++ libs/array/module.cmake                                                               |    1 +
++ libs/array/test/CMakeLists.txt                                                        |   14 +
++ libs/asio/CMakeLists.txt                                                              |   28 +
++ libs/asio/module.cmake                                                                |    3 +
++ libs/asio/test/CMakeLists.txt                                                         |  127 +
++ libs/asio/test/ip/CMakeLists.txt                                                      |   32 +
++ libs/asio/test/local/CMakeLists.txt                                                   |   16 +
++ libs/asio/test/posix/CMakeLists.txt                                                   |   17 +
++ libs/asio/test/ssl/CMakeLists.txt                                                     |   78 +
++ libs/assign/CMakeLists.txt                                                            |   28 +
++ libs/assign/module.cmake                                                              |    1 +
++ libs/assign/test/CMakeLists.txt                                                       |   28 +
++ libs/bimap/CMakeLists.txt                                                             |   28 +
++ libs/bimap/module.cmake                                                               |    1 +
++ libs/bimap/test/CMakeLists.txt                                                        |   49 +
++ libs/bind/CMakeLists.txt                                                              |   28 +
++ libs/bind/module.cmake                                                                |    1 +
++ libs/bind/test/CMakeLists.txt                                                         |   47 +
++ libs/circular_buffer/CMakeLists.txt                                                   |   29 +
++ libs/circular_buffer/module.cmake                                                     |    1 +
++ libs/circular_buffer/test/CMakeLists.txt                                              |   13 +
++ libs/compatibility/CMakeLists.txt                                                     |   27 +
++ libs/compatibility/module.cmake                                                       |    2 +
++ libs/concept_check/CMakeLists.txt                                                     |   29 +
++ libs/concept_check/module.cmake                                                       |    1 +
++ libs/concept_check/test/CMakeLists.txt                                                |   14 +
++ libs/config/CMakeLists.txt                                                            |   28 +
++ libs/config/test/CMakeLists.txt                                                       |   37 +
++ libs/conversion/CMakeLists.txt                                                        |   28 +
++ libs/conversion/test/CMakeLists.txt                                                   |   20 +
++ libs/crc/CMakeLists.txt                                                               |   27 +
++ libs/crc/module.cmake                                                                 |    1 +
++ libs/crc/test/CMakeLists.txt                                                          |   10 +
++ libs/date_time/CMakeLists.txt                                                         |   28 +
++ libs/date_time/module.cmake                                                           |    1 +
++ libs/date_time/src/CMakeLists.txt                                                     |   13 +
++ libs/date_time/test/CMakeLists.txt                                                    |  187 +
++ libs/detail/CMakeLists.txt                                                            |   27 +
++ libs/detail/module.cmake                                                              |    1 +
++ libs/disjoint_sets/CMakeLists.txt                                                     |   29 +
++ libs/disjoint_sets/module.cmake                                                       |    1 +
++ libs/disjoint_sets/test/CMakeLists.txt                                                |    7 +
++ libs/dynamic_bitset/CMakeLists.txt                                                    |   30 +
++ libs/dynamic_bitset/module.cmake                                                      |    1 +
++ libs/dynamic_bitset/test/CMakeLists.txt                                               |   13 +
++ libs/exception/CMakeLists.txt                                                         |   29 +
++ libs/exception/module.cmake                                                           |    1 +
++ libs/exception/test/CMakeLists.txt                                                    |   55 +
++ libs/filesystem/CMakeLists.txt                                                        |   28 +
++ libs/filesystem/module.cmake                                                          |    1 +
++ libs/filesystem/src/CMakeLists.txt                                                    |   14 +
++ libs/filesystem/test/CMakeLists.txt                                                   |   30 +
++ libs/flyweight/CMakeLists.txt                                                         |   18 +
++ libs/flyweight/module.cmake                                                           |    1 +
++ libs/flyweight/test/CMakeLists.txt                                                    |   53 +
++ libs/foreach/CMakeLists.txt                                                           |   27 +
++ libs/foreach/module.cmake                                                             |    1 +
++ libs/foreach/test/CMakeLists.txt                                                      |   40 +
++ libs/format/CMakeLists.txt                                                            |   28 +
++ libs/format/module.cmake                                                              |    1 +
++ libs/format/test/CMakeLists.txt                                                       |   13 +
++ libs/function/CMakeLists.txt                                                          |   28 +
++ libs/function/doc/CMakeLists.txt                                                      |    8 +
++ libs/function/module.cmake                                                            |    1 +
++ libs/function/test/CMakeLists.txt                                                     |   29 +
++ libs/function_types/CMakeLists.txt                                                    |   27 +
++ libs/function_types/module.cmake                                                      |    1 +
++ libs/function_types/test/CMakeLists.txt                                               |   76 +
++ libs/functional/CMakeLists.txt                                                        |   28 +
++ libs/functional/hash/doc/CMakeLists.txt                                               |    8 +
++ libs/functional/hash/examples/CMakeLists.txt                                          |   15 +
++ libs/functional/hash/test/CMakeLists.txt                                              |   58 +
++ libs/functional/module.cmake                                                          |    1 +
++ libs/functional/test/CMakeLists.txt                                                   |    7 +
++ libs/fusion/CMakeLists.txt                                                            |   29 +
++ libs/fusion/module.cmake                                                              |    1 +
++ libs/gil/CMakeLists.txt                                                               |   28 +
++ libs/gil/module.cmake                                                                 |    1 +
++ libs/gil/test/CMakeLists.txt                                                          |   16 +
++ libs/graph/CMakeLists.txt                                                             |   24 +
++ libs/graph/module.cmake                                                               |    4 +
++ libs/graph/src/CMakeLists.txt                                                         |   38 +
++ libs/graph/test/CMakeLists.txt                                                        |   71 +
++ libs/graph_parallel/CMakeLists.txt                                                    |   25 +
++ libs/graph_parallel/doc/CMakeLists.txt                                                |   70 +
++ libs/graph_parallel/example/CMakeLists.txt                                            |   59 +
++ libs/graph_parallel/module.cmake                                                      |    1 +
++ libs/graph_parallel/src/CMakeLists.txt                                                |   22 +
++ libs/graph_parallel/test/CMakeLists.txt                                               |  121 +
++ libs/integer/CMakeLists.txt                                                           |   31 +
++ libs/integer/module.cmake                                                             |    1 +
++ libs/integer/test/CMakeLists.txt                                                      |   14 +
++ libs/interprocess/CMakeLists.txt                                                      |   27 +
++ libs/interprocess/module.cmake                                                        |    1 +
++ libs/interprocess/test/CMakeLists.txt                                                 |   14 +
++ libs/intrusive/CMakeLists.txt                                                         |   28 +
++ libs/intrusive/module.cmake                                                           |    1 +
++ libs/io/CMakeLists.txt                                                                |   28 +
++ libs/io/module.cmake                                                                  |    1 +
++ libs/io/test/CMakeLists.txt                                                           |   12 +
++ libs/iostreams/CMakeLists.txt                                                         |   27 +
++ libs/iostreams/example/CMakeLists.txt                                                 |   10 +
++ libs/iostreams/module.cmake                                                           |    1 +
++ libs/iostreams/src/CMakeLists.txt                                                     |   36 +
++ libs/iostreams/test/CMakeLists.txt                                                    |   69 +
++ libs/iterator/CMakeLists.txt                                                          |   30 +
++ libs/iterator/module.cmake                                                            |    1 +
++ libs/iterator/test/CMakeLists.txt                                                     |   39 +
++ libs/lambda/CMakeLists.txt                                                            |   27 +
++ libs/lambda/module.cmake                                                              |    1 +
++ libs/lambda/test/CMakeLists.txt                                                       |   24 +
++ libs/logic/CMakeLists.txt                                                             |   27 +
++ libs/logic/module.cmake                                                               |    3 +
++ libs/logic/test/CMakeLists.txt                                                        |   12 +
++ libs/math/CMakeLists.txt                                                              |   28 +
++ libs/math/module.cmake                                                                |    1 +
++ libs/math/test/CMakeLists.txt                                                         |   33 +
++ libs/mpi/CMakeLists.txt                                                               |   31 +
++ libs/mpi/doc/CMakeLists.txt                                                           |   36 +
++ libs/mpi/module.cmake                                                                 |    1 +
++ libs/mpi/src/CMakeLists.txt                                                           |   84 +
++ libs/mpi/test/CMakeLists.txt                                                          |   77 +
++ libs/mpl/CMakeLists.txt                                                               |   28 +
++ libs/mpl/module.cmake                                                                 |    1 +
++ libs/mpl/test/CMakeLists.txt                                                          |   97 +
++ libs/multi_array/CMakeLists.txt                                                       |   28 +
++ libs/multi_array/module.cmake                                                         |    2 +
++ libs/multi_array/test/CMakeLists.txt                                                  |   47 +
++ libs/multi_index/CMakeLists.txt                                                       |   29 +
++ libs/multi_index/module.cmake                                                         |    1 +
++ libs/multi_index/test/CMakeLists.txt                                                  |   34 +
++ libs/numeric/CMakeLists.txt                                                           |   27 +
++ libs/numeric/conversion/test/CMakeLists.txt                                           |   17 +
++ libs/numeric/interval/test/CMakeLists.txt                                             |   34 +
++ libs/numeric/module.cmake                                                             |    1 +
++ libs/numeric/ublas/test/CMakeLists.txt                                                |   86 +
++ libs/optional/CMakeLists.txt                                                          |   28 +
++ libs/optional/module.cmake                                                            |    1 +
++ libs/optional/test/CMakeLists.txt                                                     |   23 +
++ libs/parameter/CMakeLists.txt                                                         |   29 +
++ libs/parameter/module.cmake                                                           |    1 +
++ libs/parameter/test/CMakeLists.txt                                                    |   31 +
++ libs/pool/CMakeLists.txt                                                              |   27 +
++ libs/pool/module.cmake                                                                |    1 +
++ libs/pool/test/CMakeLists.txt                                                         |    9 +
++ libs/preprocessor/CMakeLists.txt                                                      |   28 +
++ libs/preprocessor/module.cmake                                                        |    4 +
++ libs/preprocessor/test/CMakeLists.txt                                                 |   23 +
++ libs/program_options/CMakeLists.txt                                                   |   28 +
++ libs/program_options/module.cmake                                                     |    1 +
++ libs/program_options/src/CMakeLists.txt                                               |   11 +
++ libs/program_options/test/CMakeLists.txt                                              |   39 +
++ libs/property_map/CMakeLists.txt                                                      |   28 +
++ libs/property_map/module.cmake                                                        |    1 +
++ libs/property_map/test/CMakeLists.txt                                                 |   11 +
++ libs/proto/CMakeLists.txt                                                             |   27 +
++ libs/proto/module.cmake                                                               |    2 +
++ libs/proto/test/CMakeLists.txt                                                        |   58 +
++ libs/ptr_container/CMakeLists.txt                                                     |   27 +
++ libs/ptr_container/module.cmake                                                       |    1 +
++ libs/ptr_container/test/CMakeLists.txt                                                |   28 +
++ libs/python/CMakeLists.txt                                                            |   21 +
++ libs/python/module.cmake                                                              |    3 +
++ libs/python/src/CMakeLists.txt                                                        |   70 +
++ libs/python/test/CMakeLists.txt                                                       |  231 +
++ libs/random/CMakeLists.txt                                                            |   28 +
++ libs/random/module.cmake                                                              |    3 +
++ libs/random/test/CMakeLists.txt                                                       |   34 +
++ libs/range/CMakeLists.txt                                                             |   28 +
++ libs/range/doc/CMakeLists.txt                                                         |    7 +
++ libs/range/module.cmake                                                               |    1 +
++ libs/range/test/CMakeLists.txt                                                        |   25 +
++ libs/rational/CMakeLists.txt                                                          |   28 +
++ libs/rational/module.cmake                                                            |    1 +
++ libs/rational/test/CMakeLists.txt                                                     |   14 +
++ libs/regex/CMakeLists.txt                                                             |   51 +
++ libs/regex/example/CMakeLists.txt                                                     |   76 +
++ libs/regex/module.cmake                                                               |    1 +
++ libs/regex/src/CMakeLists.txt                                                         |   51 +
++ libs/regex/test/CMakeLists.txt                                                        |   93 +
++ libs/serialization/CMakeLists.txt                                                     |   28 +
++ libs/serialization/module.cmake                                                       |    3 +
++ libs/serialization/src/CMakeLists.txt                                                 |   56 +
++ libs/serialization/test/CMakeLists.txt                                                |  184 +
++ libs/signals/CMakeLists.txt                                                           |   29 +
++ libs/signals/module.cmake                                                             |    3 +
++ libs/signals/src/CMakeLists.txt                                                       |   13 +
++ libs/signals/test/CMakeLists.txt                                                      |   15 +
++ libs/signals2/CMakeLists.txt                                                          |   19 +
++ libs/signals2/module.cmake                                                            |    1 +
++ libs/signals2/test/CMakeLists.txt                                                     |   26 +
++ libs/smart_ptr/CMakeLists.txt                                                         |   36 +
++ libs/smart_ptr/module.cmake                                                           |    1 +
++ libs/smart_ptr/test/CMakeLists.txt                                                    |   56 +
++ libs/spirit/CMakeLists.txt                                                            |   30 +
++ libs/spirit/module.cmake                                                              |    1 +
++ libs/spirit/test/CMakeLists.txt                                                       |  121 +
++ libs/statechart/CMakeLists.txt                                                        |   27 +
++ libs/statechart/example/CMakeLists.txt                                                |   31 +
++ libs/statechart/module.cmake                                                          |    1 +
++ libs/statechart/test/CMakeLists.txt                                                   |   93 +
++ libs/static_assert/CMakeLists.txt                                                     |   28 +
++ libs/static_assert/module.cmake                                                       |    1 +
++ libs/static_assert/test/CMakeLists.txt                                                |   19 +
++ libs/system/CMakeLists.txt                                                            |   27 +
++ libs/system/module.cmake                                                              |    1 +
++ libs/system/src/CMakeLists.txt                                                        |   13 +
++ libs/test/CMakeLists.txt                                                              |   27 +
++ libs/test/build/Jamfile.v2                                                            |    2 +-
++ libs/test/module.cmake                                                                |    5 +
++ libs/test/src/CMakeLists.txt                                                          |   70 +
++ libs/test/test/CMakeLists.txt                                                         |   49 +
++ libs/thread/CMakeLists.txt                                                            |   29 +
++ libs/thread/example/CMakeLists.txt                                                    |   17 +
++ libs/thread/module.cmake                                                              |    1 +
++ libs/thread/src/CMakeLists.txt                                                        |   20 +
++ libs/thread/test/CMakeLists.txt                                                       |   39 +
++ libs/timer/CMakeLists.txt                                                             |   28 +
++ libs/timer/module.cmake                                                               |    1 +
++ libs/timer/test/CMakeLists.txt                                                        |    9 +
++ libs/tokenizer/CMakeLists.txt                                                         |   27 +
++ libs/tokenizer/module.cmake                                                           |    1 +
++ libs/tokenizer/test/CMakeLists.txt                                                    |   15 +
++ libs/tr1/CMakeLists.txt                                                               |   27 +
++ libs/tr1/module.cmake                                                                 |    1 +
++ libs/tr1/test/CMakeLists.txt                                                          |   75 +
++ libs/tuple/CMakeLists.txt                                                             |   27 +
++ libs/tuple/module.cmake                                                               |    2 +
++ libs/tuple/test/CMakeLists.txt                                                        |   11 +
++ libs/type_traits/CMakeLists.txt                                                       |   40 +
++ libs/type_traits/module.cmake                                                         |    1 +
++ libs/type_traits/test/CMakeLists.txt                                                  |   13 +
++ libs/typeof/CMakeLists.txt                                                            |   27 +
++ libs/typeof/module.cmake                                                              |    1 +
++ libs/typeof/test/CMakeLists.txt                                                       |   30 +
++ libs/units/CMakeLists.txt                                                             |   28 +
++ libs/units/doc/CMakeLists.txt                                                         |    8 +
++ libs/units/module.cmake                                                               |    2 +
++ libs/units/test/CMakeLists.txt                                                        |   70 +
++ libs/unordered/CMakeLists.txt                                                         |   29 +
++ libs/unordered/module.cmake                                                           |    1 +
++ libs/unordered/test/CMakeLists.txt                                                    |   24 +
++ libs/unordered/test/exception/CMakeLists.txt                                          |   25 +
++ libs/unordered/test/unordered/CMakeLists.txt                                          |   43 +
++ libs/utility/CMakeLists.txt                                                           |   37 +
++ libs/utility/enable_if/test/CMakeLists.txt                                            |   20 +
++ libs/utility/module.cmake                                                             |    1 +
++ libs/utility/swap/test/CMakeLists.txt                                                 |   41 +
++ libs/utility/test/CMakeLists.txt                                                      |   47 +
++ libs/variant/CMakeLists.txt                                                           |   28 +
++ libs/variant/module.cmake                                                             |    1 +
++ libs/variant/test/CMakeLists.txt                                                      |   15 +
++ libs/wave/CMakeLists.txt                                                              |   28 +
++ libs/wave/module.cmake                                                                |    1 +
++ libs/wave/src/CMakeLists.txt                                                          |   24 +
++ libs/wave/test/CMakeLists.txt                                                         |    8 +
++ libs/xpressive/CMakeLists.txt                                                         |   27 +
++ libs/xpressive/module.cmake                                                           |    1 +
++ libs/xpressive/test/CMakeLists.txt                                                    |   84 +
++ tools/CMakeLists.txt                                                                  |  122 +
++ tools/bcp/CMakeLists.txt                                                              |   32 +
++ tools/build/CMake/Boost.bmp                                                           |  Bin 0 -> 71674 bytes
++ tools/build/CMake/Boost.png                                                           |  Bin 0 -> 6308 bytes
++ tools/build/CMake/BoostConfig.cmake                                                   |  249 +
++ tools/build/CMake/BoostCore.cmake                                                     | 1509 +++++
++ tools/build/CMake/BoostDocs.cmake                                                     |  526 ++
++ tools/build/CMake/BoostExternals.cmake                                                |   55 +
++ tools/build/CMake/BoostTesting.cmake                                                  |  494 ++
++ tools/build/CMake/BoostUtils.cmake                                                    |  275 +
++ tools/build/CMake/CMakeLists.txt                                                      |   91 +
++ tools/build/CMake/CTestCustom.cmake.in                                                |    5 +
++ tools/build/CMake/CompileTest/CMakeLists.txt                                          |   12 +
++ tools/build/CMake/FindICU.cmake                                                       |   51 +
++ tools/build/CMake/LinkTest/CMakeLists.txt                                             |   26 +
++ tools/build/CMake/catalog.xml.in                                                      |    9 +
++ tools/build/CMake/docs/.gitignore                                                     |    4 +
++ tools/build/CMake/docs/Makefile.in                                                    |  101 +
++ tools/build/CMake/docs/build/html/.buildinfo                                          |    4 +
++ tools/build/CMake/docs/build/html/_images/MacInstaller.png                            |  Bin 0 -> 185943 bytes
++ tools/build/CMake/docs/build/html/_images/WindowsInstaller.png                        |  Bin 0 -> 88166 bytes
++ tools/build/CMake/docs/build/html/_sources/add_boost_library.txt                      |   49 +
++ tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt                   |  231 +
++ tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt                |  107 +
++ tools/build/CMake/docs/build/html/_sources/build_configuration.txt                    |  289 +
++ tools/build/CMake/docs/build/html/_sources/build_installer.txt                        |   49 +
++ tools/build/CMake/docs/build/html/_sources/build_variants.txt                         |  275 +
++ tools/build/CMake/docs/build/html/_sources/diff.txt                                   |    9 +
++ tools/build/CMake/docs/build/html/_sources/exported_targets.txt                       |  247 +
++ tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt                        |   19 +
++ tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt                      |   10 +
++ tools/build/CMake/docs/build/html/_sources/externals/expat.txt                        |   10 +
++ tools/build/CMake/docs/build/html/_sources/externals/icu.txt                          |   22 +
++ tools/build/CMake/docs/build/html/_sources/externals/index.txt                        |   44 +
++ tools/build/CMake/docs/build/html/_sources/externals/mpi.txt                          |   10 +
++ tools/build/CMake/docs/build/html/_sources/externals/python.txt                       |   88 +
++ tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt                     |   27 +
++ tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt                     |   18 +
++ tools/build/CMake/docs/build/html/_sources/externals/zlib.txt                         |   17 +
++ tools/build/CMake/docs/build/html/_sources/faq.txt                                    |   39 +
++ tools/build/CMake/docs/build/html/_sources/git.txt                                    |  182 +
++ tools/build/CMake/docs/build/html/_sources/index.txt                                  |  137 +
++ tools/build/CMake/docs/build/html/_sources/individual_libraries.txt                   |  152 +
++ tools/build/CMake/docs/build/html/_sources/install_customization.txt                  |  197 +
++ tools/build/CMake/docs/build/html/_sources/notes_by_version.txt                       |  218 +
++ tools/build/CMake/docs/build/html/_sources/quickstart.txt                             |  244 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt         |  132 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt            |  192 +
++ .../CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt   |   36 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt        |   95 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt                 |    7 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt          |    7 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt           |    6 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt      |    6 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt               |    7 +
++ tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt          |    7 +
++ tools/build/CMake/docs/build/html/_sources/testing.txt                                |  428 ++
++ tools/build/CMake/docs/build/html/_static/alt.boost.png                               |  Bin 0 -> 8906 bytes
++ tools/build/CMake/docs/build/html/_static/basic.css                                   |  405 ++
++ tools/build/CMake/docs/build/html/_static/boost.css                                   |  221 +
++ tools/build/CMake/docs/build/html/_static/contents.png                                |  Bin 0 -> 202 bytes
++ tools/build/CMake/docs/build/html/_static/doctools.js                                 |  232 +
++ tools/build/CMake/docs/build/html/_static/file.png                                    |  Bin 0 -> 392 bytes
++ tools/build/CMake/docs/build/html/_static/jquery.js                                   |   32 +
++ tools/build/CMake/docs/build/html/_static/minus.png                                   |  Bin 0 -> 199 bytes
++ tools/build/CMake/docs/build/html/_static/navigation.png                              |  Bin 0 -> 218 bytes
++ tools/build/CMake/docs/build/html/_static/plus.png                                    |  Bin 0 -> 199 bytes
++ tools/build/CMake/docs/build/html/_static/pygments.css                                |   59 +
++ tools/build/CMake/docs/build/html/_static/searchtools.js                              |  467 ++
++ tools/build/CMake/docs/build/html/_static/sphinxdoc.css                               |  349 +
++ tools/build/CMake/docs/build/html/add_boost_library.html                              |  146 +
++ tools/build/CMake/docs/build/html/add_compiled_library.html                           |  319 +
++ tools/build/CMake/docs/build/html/adding_regression_tests.html                        |  201 +
++ tools/build/CMake/docs/build/html/build_configuration.html                            |  359 +
++ tools/build/CMake/docs/build/html/build_installer.html                                |  139 +
++ tools/build/CMake/docs/build/html/build_variants.html                                 |  371 +
++ tools/build/CMake/docs/build/html/diff.html                                           | 1102 +++
++ tools/build/CMake/docs/build/html/exported_targets.html                               |  320 +
++ tools/build/CMake/docs/build/html/externals/bzip2.html                                |  127 +
++ tools/build/CMake/docs/build/html/externals/doxygen.html                              |  108 +
++ tools/build/CMake/docs/build/html/externals/expat.html                                |  108 +
++ tools/build/CMake/docs/build/html/externals/icu.html                                  |  131 +
++ tools/build/CMake/docs/build/html/externals/index.html                                |  140 +
++ tools/build/CMake/docs/build/html/externals/mpi.html                                  |  108 +
++ tools/build/CMake/docs/build/html/externals/python.html                               |  170 +
++ tools/build/CMake/docs/build/html/externals/valgrind.html                             |  128 +
++ tools/build/CMake/docs/build/html/externals/xsltproc.html                             |  124 +
++ tools/build/CMake/docs/build/html/externals/zlib.html                                 |  124 +
++ tools/build/CMake/docs/build/html/faq.html                                            |  130 +
++ tools/build/CMake/docs/build/html/genindex.html                                       |  360 +
++ tools/build/CMake/docs/build/html/git.html                                            |  278 +
++ tools/build/CMake/docs/build/html/index.html                                          |  365 +
++ tools/build/CMake/docs/build/html/individual_libraries.html                           |  241 +
++ tools/build/CMake/docs/build/html/install_customization.html                          |  252 +
++ tools/build/CMake/docs/build/html/notes_by_version.html                               |  318 +
++ tools/build/CMake/docs/build/html/objects.inv                                         |    6 +
++ tools/build/CMake/docs/build/html/quickstart.html                                     |  338 +
++ tools/build/CMake/docs/build/html/reference/boost_add_executable.html                 |  210 +
++ tools/build/CMake/docs/build/html/reference/boost_add_library.html                    |  295 +
++ tools/build/CMake/docs/build/html/reference/boost_additional_test_dependencies.html   |  142 +
++ tools/build/CMake/docs/build/html/reference/boost_library_project.html                |  184 +
++ tools/build/CMake/docs/build/html/reference/boost_module.html                         |  103 +
++ tools/build/CMake/docs/build/html/reference/boost_python_module.html                  |  103 +
++ tools/build/CMake/docs/build/html/reference/boost_test_compile.html                   |  103 +
++ tools/build/CMake/docs/build/html/reference/boost_test_compile_fail.html              |  103 +
++ tools/build/CMake/docs/build/html/reference/boost_test_run.html                       |  103 +
++ tools/build/CMake/docs/build/html/reference/boost_test_run_fail.html                  |   93 +
++ tools/build/CMake/docs/build/html/search.html                                         |  100 +
++ tools/build/CMake/docs/build/html/searchindex.js                                      |    1 +
++ tools/build/CMake/docs/build/html/testing.html                                        |  516 ++
++ tools/build/CMake/docs/source/.gitignore                                              |    1 +
++ tools/build/CMake/docs/source/GitLexer.py                                             |   49 +
++ tools/build/CMake/docs/source/MacInstaller.png                                        |  Bin 0 -> 185943 bytes
++ tools/build/CMake/docs/source/WindowsInstaller.png                                    |  Bin 0 -> 88166 bytes
++ tools/build/CMake/docs/source/_static/boost.css                                       |  221 +
++ tools/build/CMake/docs/source/_static/pygments.css                                    |   59 +
++ tools/build/CMake/docs/source/_static/sphinxdoc.css                                   |  349 +
++ tools/build/CMake/docs/source/_templates/layout.html                                  |    7 +
++ tools/build/CMake/docs/source/add_boost_library.rst                                   |   49 +
++ tools/build/CMake/docs/source/add_compiled_library.rst                                |  231 +
++ tools/build/CMake/docs/source/adding_regression_tests.rst                             |  107 +
++ tools/build/CMake/docs/source/alt.boost.png                                           |  Bin 0 -> 8906 bytes
++ tools/build/CMake/docs/source/boost-dark-trans.png                                    |  Bin 0 -> 8312 bytes
++ tools/build/CMake/docs/source/boost-small.png                                         |  Bin 0 -> 8899 bytes
++ tools/build/CMake/docs/source/boost.png                                               |  Bin 0 -> 6308 bytes
++ tools/build/CMake/docs/source/boost/theme.conf                                        |    9 +
++ tools/build/CMake/docs/source/boost/todo.py                                           |  147 +
++ tools/build/CMake/docs/source/boost_cmake_version.py.in                               |    2 +
++ tools/build/CMake/docs/source/build_configuration.rst                                 |  289 +
++ tools/build/CMake/docs/source/build_installer.rst                                     |   49 +
++ tools/build/CMake/docs/source/build_variants.rst                                      |  275 +
++ tools/build/CMake/docs/source/cmake.py                                                |   36 +
++ tools/build/CMake/docs/source/conf.py                                                 |  214 +
++ tools/build/CMake/docs/source/diff.rst                                                |    9 +
++ tools/build/CMake/docs/source/exported_targets.rst                                    |  247 +
++ tools/build/CMake/docs/source/externals/bzip2.rst                                     |   19 +
++ tools/build/CMake/docs/source/externals/doxygen.rst                                   |   10 +
++ tools/build/CMake/docs/source/externals/expat.rst                                     |   10 +
++ tools/build/CMake/docs/source/externals/icu.rst                                       |   22 +
++ tools/build/CMake/docs/source/externals/index.rst                                     |   44 +
++ tools/build/CMake/docs/source/externals/mpi.rst                                       |   10 +
++ tools/build/CMake/docs/source/externals/python.rst                                    |   88 +
++ tools/build/CMake/docs/source/externals/valgrind.rst                                  |   27 +
++ tools/build/CMake/docs/source/externals/xsltproc.rst                                  |   18 +
++ tools/build/CMake/docs/source/externals/zlib.rst                                      |   17 +
++ tools/build/CMake/docs/source/faq.rst                                                 |   39 +
++ tools/build/CMake/docs/source/git.rst                                                 |  182 +
++ tools/build/CMake/docs/source/git_diff.txt                                            |    1 +
++ tools/build/CMake/docs/source/index.rst                                               |  138 +
++ tools/build/CMake/docs/source/individual_libraries.rst                                |  152 +
++ tools/build/CMake/docs/source/install_customization.rst                               |  197 +
++ tools/build/CMake/docs/source/modularize_library.rst.set_aside                        |  183 +
++ tools/build/CMake/docs/source/notes_by_version.rst                                    |  218 +
++ tools/build/CMake/docs/source/quickstart.rst                                          |  244 +
++ tools/build/CMake/docs/source/reference/boost_add_executable.rst                      |  132 +
++ tools/build/CMake/docs/source/reference/boost_add_library.rst                         |  192 +
++ tools/build/CMake/docs/source/reference/boost_additional_test_dependencies.rst        |   36 +
++ tools/build/CMake/docs/source/reference/boost_library_project.rst                     |   95 +
++ tools/build/CMake/docs/source/reference/boost_module.rst                              |    7 +
++ tools/build/CMake/docs/source/reference/boost_python_module.rst                       |    7 +
++ tools/build/CMake/docs/source/reference/boost_test_compile.rst                        |    6 +
++ tools/build/CMake/docs/source/reference/boost_test_compile_fail.rst                   |    6 +
++ tools/build/CMake/docs/source/reference/boost_test_run.rst                            |    7 +
++ tools/build/CMake/docs/source/reference/boost_test_run_fail.rst                       |    7 +
++ tools/build/CMake/docs/source/testing.rst                                             |  428 ++
++ tools/build/CMake/externals/BZip2.cmake                                               |   11 +
++ tools/build/CMake/externals/Doxygen.cmake                                             |   13 +
++ tools/build/CMake/externals/Expat.cmake                                               |   13 +
++ tools/build/CMake/externals/ICU.cmake                                                 |   12 +
++ tools/build/CMake/externals/MPI.cmake                                                 |   11 +
++ tools/build/CMake/externals/Python.cmake                                              |  161 +
++ tools/build/CMake/externals/Python/valgrind-python-2.4.6.supp                         |  228 +
++ tools/build/CMake/externals/Python/valgrind-python-2.6.4.supp                         |  403 ++
++ tools/build/CMake/externals/Python/valgrind-python-3.1.1.supp                         |  391 ++
++ tools/build/CMake/externals/Valgrind.cmake                                            |   18 +
++ tools/build/CMake/externals/Xsltproc.cmake                                            |   18 +
++ tools/build/CMake/externals/ZLib.cmake                                                |   13 +
++ tools/build/CMake/install_me/Boost-thisversion.cmake.in                               |   75 +
++ tools/build/CMake/install_me/BoostConfig.cmake.in                                     |   80 +
++ tools/build/CMake/install_me/BoostConfigAgnostic.cmake.in                             |   19 +
++ tools/build/CMake/install_me/BoostConfigVersion.cmake.in                              |   22 +
++ tools/build/CMake/install_me/BoostConfigVersionAgnostic.cmake.in                      |   69 +
++ tools/build/CMake/install_me/version.hpp.override.in                                  |   35 +
++ tools/build/CMake/main.cpp                                                            |    7 +
++ tools/build/CMake/test/include/selftest_lib.ipp                                       |   22 +
++ tools/build/CMake/test/include/selftest_main.ipp                                      |   11 +
++ tools/build/CMake/test/include/selftest_report.hpp                                    |    6 +
++ tools/build/CMake/test/libs/a/CMakeLists.txt                                          |   27 +
++ tools/build/CMake/test/libs/a/module.cmake                                            |    1 +
++ tools/build/CMake/test/libs/a/src/CMakeLists.txt                                      |   38 +
++ tools/build/CMake/test/libs/a/src/lib.cpp                                             |   22 +
++ tools/build/CMake/test/libs/a/src/main.cpp                                            |    1 +
++ tools/build/CMake/test/libs/a/test/CMakeLists.txt                                     |   21 +
++ tools/build/CMake/test/libs/b/CMakeLists.txt                                          |   27 +
++ tools/build/CMake/test/libs/b/module.cmake                                            |    1 +
++ tools/build/CMake/test/libs/b/src/CMakeLists.txt                                      |   30 +
++ tools/build/CMake/test/libs/b/src/lib.cpp                                             |    1 +
++ tools/build/CMake/test/libs/b/src/main.cpp                                            |    1 +
++ tools/build/CMake/test/libs/b/test/CMakeLists.txt                                     |   21 +
++ tools/build/CMake/test/libs/c/CMakeLists.txt                                          |   27 +
++ tools/build/CMake/test/libs/c/src/CMakeLists.txt                                      |   30 +
++ tools/build/CMake/test/libs/c/src/lib.cpp                                             |   22 +
++ tools/build/CMake/test/libs/c/src/main.cpp                                            |   12 +
++ tools/build/CMake/test/libs/c/test/CMakeLists.txt                                     |   21 +
++ tools/build/CMake/test/tools/tool-a/CMakeLists.txt                                    |   36 +
++ tools/build/CMake/test/tools/tool-a/main.cpp                                          |   11 +
++ tools/build/CMake/test/tools/tool-a/module.cmake                                      |    1 +
++ tools/build/CMake/test/tools/tool-a/src/CMakeLists.txt                                |   36 +
++ tools/build/CMake/test/tools/tool-a/src/lib.cpp                                       |   17 +
++ tools/build/CMake/test/tools/tool-a/src/main.cpp                                      |   10 +
++ tools/build/CMake/test/tools/tool-a/test/CMakeLists.txt                               |   21 +
++ tools/build/CMake/test/tools/tool-b/CMakeLists.txt                                    |   35 +
++ tools/build/CMake/test/tools/tool-b/main.cpp                                          |   10 +
++ tools/build/CMake/test/tools/tool-b/module.cmake                                      |    1 +
++ tools/build/CMake/test/tools/tool-b/src/CMakeLists.txt                                |   28 +
++ tools/build/CMake/test/tools/tool-b/src/lib.cpp                                       |   17 +
++ tools/build/CMake/test/tools/tool-b/src/main.cpp                                      |   10 +
++ tools/build/CMake/test/tools/tool-b/test/CMakeLists.txt                               |   21 +
++ tools/inspect/CMakeLists.txt                                                          |   20 +
++ tools/jam/src/.gitignore                                                              |    3 +
++ tools/quickbook/CMakeLists.txt                                                        |   33 +
++ tools/wave/CMakeLists.txt                                                             |   22 +
++ 500 files changed, 32214 insertions(+), 13 deletions(-)
++
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/exported_targets.html boost-cmake/tools/build/CMake/docs/build/html/exported_targets.html +--- boost-cmake/tools/build/CMake/docs/build/html/exported_targets.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/exported_targets.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,333 @@ ++ ++ ++ ++ ++ ++ ++ Tricks for Building against Boost with CMake — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Tricks for Building against Boost with CMake

++

Boost.CMake exports its targets, making developing independent ++projects against an installed boost, or simply against a build tree ++sitting on disk. There are a variety of ways to use these to ease ++configuration of boost in your external project.

++
++

With an uninstalled build

++

You only need to do three things:

++
    ++
  1. Add the appropriate include directory with ++include_directories(). This is the toplevel of the boost ++source tree.

    ++
  2. ++
  3. include the generated Exports.cmake from the build tree ++containing the exported targets. I is located in ++${CMAKE_BINARY_DIR}/lib/Exports.cmake

    ++
  4. ++
  5. Tell cmake about your link dependencies with ++target_link_libraries. Note that you use the names of the ++cmake targets, not the shorter names that the libraries have on ++disk. make help shows a list:

    ++
    % make help | grep signals
    ++... boost_signals
    ++... boost_signals-mt-shared
    ++... boost_signals-mt-shared-debug
    ++... boost_signals-mt-static
    ++... boost_signals-mt-static-debug
    ++
    ++

    See also Name Mangling for details on the naming ++conventions.

    ++
  6. ++
++

Since these are exported targets, CMake will add appropriate rpaths ++as necessary; fiddling with LD_LIBRARY_PATH should not be ++necessary.

++

If you get the target name wrong, cmake will assume that you are ++talking about a library in the linker’s default search path, not an ++imported target name and you will get an error when cmake tries to ++link against the nonexistent target. For instance, if I specify:

++
target_link_libraries(main boost_thread-mt-d)
++
++

on linux my error will be something like:

++
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
++Linking CXX executable main
++/usr/bin/ld: cannot find -lboost_thread-mt-d
++collect2: ld returned 1 exit status
++
++

The problem here is that the real name of the multithreaded, shared, ++debug library target is boost_thread-mt-shared-debug. I know this is ++confusing; much of this is an attempt to be compatible with ++boost.build.

++

If you are having trouble, have a look inside that file ++Exports.cmake. For each available target, you’ll see:

++
# Create imported target boost_thread-mt-shared-debug
++ADD_LIBRARY(boost_thread-mt-shared-debug SHARED IMPORTED)
++
++# Import target "boost_thread-mt-shared-debug" for configuration "Release"
++SET_PROPERTY(TARGET boost_thread-mt-shared-debug APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
++SET_TARGET_PROPERTIES(boost_thread-mt-shared-debug PROPERTIES
++  IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "pthread;rt"
++  IMPORTED_LOCATION_RELEASE "/home/troy/Projects/boost/cmake/cmaketest/build/boost/lib/libboost_thread-mt-d.so.1.41.0"
++  IMPORTED_SONAME_RELEASE "libboost_thread-mt-d.so.1.41.0"
++  )
++
++

it is the name in the ADD_LIBRARY line that you pass to ++target_link_libraries().

++
++

Example

++

There is an unpacked boost in /home/troy/boost-1.41.0/src and ++built boost in directory /home/troy/boost/1.41.0/build. I have a ++program that builds from one file, main.cpp and uses boost ++threads. My CMakeLists.txt looks like this:

++
include_directories(
++  /home/troy/boost-1.41.0/src
++  /home/troy/boost-1.41.0/build/lib/Exports.cmake
++  )
++
++add_executable(my_program main.cpp)
++
++target_link_libraries(my_program boost_thread-mt-shared-debug)
++
++

When I build, I see ++(wrapped, and some output replaced with ... for brevity):

++
% make VERBOSE=1
++...
++[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
++/usr/bin/c++ -I/home/troy/boost-1.41.0/src -o CMakeFiles/main.dir/main.cpp.o -c /home/troy/myproject/main.cpp
++...
++linking CXX executable main
++/usr/bin/c++ -fPIC CMakeFiles/main.dir/main.cpp.o -o main -rdynamic /home/troy/boost-1.41.0/build/lib/libboost_thread-mt-d.so.1.41.0 -lpthread -lrt -Wl,-rpath,/home/troy/boost-1.41.0/build/lib
++...
++[100%] Built target main
++
++
++
++
++

With an installed boost

++

The process by which cmake discovers an installed boost is a big ++topic, outside the scope of this document. Boost.CMake makes every ++effort to install things cleanly and behave in a backwards-compatible ++manner.

++

The variable BOOST_INSTALL_CMAKE_DRIVERS controls whether ++Boost.CMake installs two files which help out in case multiple ++versions of boost are installed. If there is only one version ++present, the situation is simpler: typically this is simply a ++matter of either installing boost to a directory that on cmake’s ++built-in CMAKE_PREFIX_PATH, or adding the directory to ++CMAKE_PREFIX_PATH in your environment if it is not. You can see ++built-in search path by running cmake --system-information and ++looking for CMAKE_SYSTEM_PREFIX_PATH.

++
++

Try this first

++

Make a subdirectory for your project and create a file main.cpp:

++
#include <iostream>
++#include <boost/version.hpp>
++#include <boost/thread/thread.hpp>
++
++void helloworld()
++{
++    std::cout << BOOST_VERSION << std::endl;
++}
++
++int main()
++{
++    boost::thread thrd(&helloworld);
++    thrd.join();
++}
++
++

Create a CMakeLists.txt in the same directory containing the ++following:

++
find_package(Boost 1.41.0 COMPONENTS thread NO_MODULE)
++                                            ^^^^^^^^^--- NOTE THIS
++include(${Boost_INCLUDE_DIR})
++add_executable(main main.cpp)
++target_link_libraries(main ${Boost_LIBRARIES})
++
++

The NO_MODULE above is currently required, pending updates to ++FindBoost.cmake in a cmake release.

++

Then run cmake . in that directory (note the dot). Then run make. ++If all is well you will see:

++
% make VERBOSE=1
++...
++[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
++/usr/bin/c++    -I/usr/local/boost-1.41.0/include   -o CMakeFiles/main.dir/main.cpp.o -c /home/troy/Projects/boost/cmake/proj/main.cpp
++...
++Linking CXX executable main
++/usr/bin/c++     -fPIC CMakeFiles/main.dir/main.cpp.o  -o main -rdynamic /usr/local/boost-1.41.0/lib/libboost_thread-mt-d.so.1.41.0 -lpthread -lrt -Wl,-rpath,/usr/local/boost-1.41.0/lib
++...
++[100%] Built target main
++
++

If all is not well, set CMAKE_PREFIX_PATH in your environment or in ++your CMakeLists.txt. Add the CMAKE_INSTALL_PREFIX that you used ++when you installed boost:

++
export CMAKE_PREFIX_PATH=/my/unusual/location
++
++

and try again.

++
++
++

Alternative: via Boost_DIR

++

If the above didn’t work, you can help cmake find your boost ++installation by setting Boost_DIR (in your CMakeLists.txt to ++the BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR that was set when you ++compiled. Boost_DIR will override any other settings.

++

Given a (versioned) boost installation in /net/someplace, ++Your CMakeLists.txt would look like this:

++
include_directories(/net/someplace/include/boost-1.41.0)
++
++# you can also set Boost_DIR in your environment
++set(Boost_DIR /net/someplace/share/boost-1.41.0/cmake)
++
++find_package(Boost NO_MODULE)
++
++add_executable(main main.cpp)
++
++target_link_libraries(main boost_thread-mt-shared-debug)
++
++
++
++

Multiple versions of boost installed

++

The only recommended way to do this is the following:

++ ++

At this point passing a version argument to find_package (see also ++docs for FindBoost.cmake) should result in correct behavior.

++

Footnotes

++ ++ ++ ++ ++ ++
[1]If your distribution specifies a LIB_SUFFIX ++(e.g. if it installs libraries to ++${CMAKE_INSTALL_PREFIX/lib64, you ++will find Boost.cmake there. If the installation is ++‘versioned’, the Boost.cmake file may be in a ++versioned subdirectory of lib, e.g. lib/boost-1.41.0.
++
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/bzip2.html boost-cmake/tools/build/CMake/docs/build/html/externals/bzip2.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/bzip2.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/bzip2.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,137 @@ ++ ++ ++ ++ ++ ++ ++ BZip2 — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

External Dependencies

++

Next topic

++

Doxygen

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

BZip2

++

If WITH_BZIP2 is ON, BZip2 is detected via the standard cmake ++find_package(BZip2). The following variables are set:

++ ++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
BZIP2_FOUNDBzip2 was found
BZIP2_INCLUDE_DIRPath to BZip2 includes
BZIP2_DEFINITIONSCompile line flags for BZip2
BZIP2_LIBRARIESLibraries to link to when using BZip2
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/doxygen.html boost-cmake/tools/build/CMake/docs/build/html/externals/doxygen.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/doxygen.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/doxygen.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,118 @@ ++ ++ ++ ++ ++ ++ ++ Doxygen — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

BZip2

++

Next topic

++

Expat

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Doxygen

++

If WITH_DOXYGEN is ON, doxygen is detected via the standard ++cmake find_package(Doxygen). See the cmake documentation for more ++information

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/expat.html boost-cmake/tools/build/CMake/docs/build/html/externals/expat.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/expat.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/expat.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,118 @@ ++ ++ ++ ++ ++ ++ ++ Expat — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Doxygen

++

Next topic

++

ICU (International Components for Unicode)

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Expat

++

If WITH_EXPAT is ON, expat is detected via the standard ++cmake find_package(Expat). See the cmake documentation for more ++information

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/icu.html boost-cmake/tools/build/CMake/docs/build/html/externals/icu.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/icu.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/icu.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,141 @@ ++ ++ ++ ++ ++ ++ ++ ICU (International Components for Unicode) — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Expat

++

Next topic

++

MPI

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

ICU (International Components for Unicode)

++

If WITH_ICU is ON, ICU is detected via the standard cmake ++find_package(ICU). The following variables are set:

++ ++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
ICU_FOUNDON if icu was found
ICU_I18N_FOUNDON if the i18n part (whatever that is) ++of ICU was found.
ICU_INCLUDE_DIRSpath to ICU headers
ICU_LIBRARIESfull paths to ICU libraries
ICU_I18N_LIBRARIESfull paths to the i18n libraries
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/index.html boost-cmake/tools/build/CMake/docs/build/html/externals/index.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/index.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/index.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,150 @@ ++ ++ ++ ++ ++ ++ ++ External Dependencies — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

FAQ

++

Next topic

++

BZip2

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

External Dependencies

++

Each external dependency has an associated option WITH_dependency that controls whether detection of the dependency will ++happen at all. These options default to ON.

++

Each external will set a variable external_FOUND if detection ++was successful. If this variable is empty (or FALSE, 0, or ++NO) detection will be reattempted each time you configure.

++

To disable the detection of any given external dependency and ++thereby any libraries or features that depend on it, set option ++WITH_dependency to NO (or OFF, etc.):

++
% cmake ../src -DWITH_PYTHON=OFF
++-- The C compiler identification is GNU
++-- The CXX compiler identification is GNU
++... more output ...
++--
++-- Python:
++-- Disabled since WITH_PYTHON=OFF
++--
++... more output ...
++-- + python
++-- +-- disabled since PYTHON_FOUND is false
++--
++
++ ++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/mpi.html boost-cmake/tools/build/CMake/docs/build/html/externals/mpi.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/mpi.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/mpi.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,118 @@ ++ ++ ++ ++ ++ ++ ++ MPI — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

ICU (International Components for Unicode)

++

Next topic

++

Python

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

MPI

++

If WITH_MPI is ON, MPI is detected via the standard ++cmake find_package(MPI). See the cmake documentation for more ++information.

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/python.html boost-cmake/tools/build/CMake/docs/build/html/externals/python.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/python.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/python.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,180 @@ ++ ++ ++ ++ ++ ++ ++ Python — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Table Of Contents

++ ++ ++

Previous topic

++

MPI

++

Next topic

++

Xsltproc

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Python

++

By default, Boost.CMake will use the python detection built in to ++cmake. The relevant variables (command line or environment) are:

++
++

PYTHON_EXECUTABLE

++

The path to the python executable, e.g. /usr/local/Python-3.1.1/bin/python3

++
++
++

PYTHON_DEBUG_LIBRARIES

++

The path to the python debug library, typically only used by developers.

++
++
++

PYTHON_LIBRARIES

++

The path to the python library, ++e.g. /usr/local/Python-3.1.1/lib/libpython3.1.so

++
++
++

PYTHON_INCLUDE_PATH

++

The path to the include directory, ++e.g. /usr/local/Python-3.1.1/include/python3.1. Note that cmake ++will check for the file Python.h in this directory and complain if ++it is not found.

++

There are two ways to specify these, on the command line or via ++environment variables. Environment variables will override command ++line flags if present.

++

Command line

++
% cmake ../src -DPYTHON_EXECUTABLE=/path/to/bin/python3          \
++               -DPYTHON_LIBRARIES=/path/to/libpython3.1.so       \
++               -DPYTHON_INCLUDE_PATH=/path/to/include/python3.1
++
++

Exported environment variables

++
% export PYTHON_EXECUTABLE=/path/to/bin/python
++% export PYTHON_LIBRARIES=/path/to/libpython3.1.so
++% export PYTHON_INCLUDE_PATH=/path/to/include/python3.1
++% cmake ../src
++
++

Either way, in the configuration output, you should see something ++like:

++
-- Testing PYTHON_EXECUTABLE from environment
++-- Ok, using /path/to/bin/python3
++-- Testing PYTHON_LIBRARIES from environment
++-- Ok, using /path/to/lib/libpython3.1.so.
++-- Skipping optional PYTHON_DEBUG_LIBRARIES:  not set.
++-- Testing PYTHON_INCLUDE_PATH from environment
++-- Ok, using /path/to/include/python3.1
++-- Python:
++--   executable:   /path/to/bin/python3
++--   lib:          /path/to/lib/libpython3.1.so
++--   debug lib:
++--   include path: /path/to/include/python3.1
++
++

NOTE, once successfully detected, the python configuration will ++not be redetected. To modify, edit the relevant entries in your ++CMakeCache.txt, or delete it entirely to trigger redetection.

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/valgrind.html boost-cmake/tools/build/CMake/docs/build/html/externals/valgrind.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/valgrind.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/valgrind.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,138 @@ ++ ++ ++ ++ ++ ++ ++ Valgrind — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Xsltproc

++

Next topic

++

Zlib

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Valgrind

++

Boost.cmake does a standard path search for valgrind. If found, ++it sets the following variables

++ ++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
VALGRIND_FOUNDWas valgrind found
VALGRIND_FLAGS“–tool=memcheck”
VALGRIND_EXECUTABLEpath to the executable
++

If the setting WITH_VALGRIND is ON, (see ++External Dependencies) then tests will be run under valgrind. ++Tip: CTest’s -V flag will show you the exact commands run and ++output of each test.

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/xsltproc.html boost-cmake/tools/build/CMake/docs/build/html/externals/xsltproc.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/xsltproc.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/xsltproc.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,134 @@ ++ ++ ++ ++ ++ ++ ++ Xsltproc — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Python

++

Next topic

++

Valgrind

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Xsltproc

++

Boost.cmake does a standard path search for xsltproc. If found, ++it sets the following variables

++ ++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
XSLTPROC_FOUNDWas xsltproc found
XSLTPROC_FLAGS“–xinclude”
XSLTPROC_EXECUTABLEpath to the executable
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/externals/zlib.html boost-cmake/tools/build/CMake/docs/build/html/externals/zlib.html +--- boost-cmake/tools/build/CMake/docs/build/html/externals/zlib.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/externals/zlib.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,134 @@ ++ ++ ++ ++ ++ ++ ++ Zlib — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Valgrind

++

Next topic

++

Hacking Boost.CMake with Git

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

Zlib

++

If WITH_ZLIB is ON, Zlib is detected via the standard cmake ++find_package(Zlib). The following variables are set:

++ ++++++++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
ZLIB_FOUNDZlib was found
ZLIB_INCLUDE_DIRPath to Zlib includes
ZLIB_LIBRARIESLibraries to link to when using Zlib
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/faq.html boost-cmake/tools/build/CMake/docs/build/html/faq.html +--- boost-cmake/tools/build/CMake/docs/build/html/faq.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/faq.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,140 @@ ++ ++ ++ ++ ++ ++ ++ FAQ — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

FAQ

++

A collection of asked questions.

++
++

How do I set /D _SECURE_SCL=0 on the commandline for release builds?

++
    ++
  • Run the cmake gui, pick the source and build directories, click ++Configure
  • ++
  • Find the entry called RELEASE_COMPILE_FLAGS and modify to taste. ++(See also Per-feature Compilation and Linker Options)
  • ++
  • Click Configure again, settings will be regenerated with your ++flags intact.
  • ++
  • Click Generate
  • ++
  • Run Visual Studio, navigate to the build directory, open ++Boost.sln, build, profit.
  • ++
++

Note: I couldn’t find the magic checkbox to tell visual studio show me ++what commands it executes while building. I switched the cmake gui to ++‘advanced mode’ and change CMAKE_VERBOSE_MAKEFILES to TRUE. Is there a ++more ‘visualstudioesque’ way to do this?

++

-t

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/find_package_boost.html boost-cmake/tools/build/CMake/docs/build/html/find_package_boost.html +--- boost-cmake/tools/build/CMake/docs/build/html/find_package_boost.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/find_package_boost.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,153 @@ ++ ++ ++ ++ ++ ++ ++ find_package(Boost) — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

Customizing the install

++

Next topic

++

FAQ

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

find_package(Boost)

++

See Customizing the install for more information about variables ++used in this section.

++

If you plan on using the FindBoost.cmake packaged with cmake ++versions 2.8.0 and earlier, (that is, third party packages that build ++with cmake need to find this boost installation via the cmake command ++find_package(Boost...), you will need to layout your boost ++installation in a way that is consistent with the way boost was ++installed by bjam during the many Dark Years. Michael Jackson of ++bluequartz.net reports success with the configuration below. He ++refers to boost.cmake variables INSTALL_VERSIONED, ++BOOST_INCLUDE_INSTALL_DIR, and BOOST_LIB_INSTALL_DIR:

++
> Set INSTALL_VERSIONED=OFF
++> set BOOST_INCLUDE_INSTALL_DIR=include/boost-1_41
++> set BOOST_LIB_INSTALL_DIR=lib
++>
++> and then go. I also set an environment variable BOOST_ROOT to the
++> CMAKE_INSTALL_PREFIX.
++>
++> In my CMake file I have the following;
++>
++> # ---------- Find Boost Headers/Libraries -----------------------
++> SET (Boost_FIND_REQUIRED TRUE)
++> SET (Boost_FIND_QUIETLY TRUE)
++> set (Boost_USE_MULTITHREADED TRUE)
++> set (Boost_USE_STATIC_LIBS TRUE)
++> SET (Boost_ADDITIONAL_VERSIONS "1.41" "1.41.0")
++>
++> if ( NOT MXA_BOOST_HEADERS_ONLY)
++>  set (MXA_BOOST_COMPONENTS program_options unit_test_framework
++> test_exec_monitor)
++> endif()
++> FIND_PACKAGE(Boost COMPONENTS  ${MXA_BOOST_COMPONENTS} )
++> INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
++> LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
++>
++> This successfully works with the FindBoost.cmake that is included with CMake 2.6.4
++>
++
++

Currently in development there are other, perhaps easier, ways to ++detect your boost installations if you aren’t dependent on this older ++FindBoost; see Tricks for Building against Boost with CMake.

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/genindex.html boost-cmake/tools/build/CMake/docs/build/html/genindex.html +--- boost-cmake/tools/build/CMake/docs/build/html/genindex.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/genindex.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,372 @@ ++ ++ ++ ++ ++ ++ ++ Index — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++ ++ ++ ++
++
++ ++
++
++
++
++ ++ ++

Index

++ ++ A | B | C | D | E | F | I | L | M | N | O | P | R | S | T | U | V | W | X | Z ++ ++
++ ++ ++

A

++
++
++ ++
alt.boost
++
Anarchists
++
++
Lunatics, Terrorists and
++
++
++ ++

B

++
++
++ ++
boost_add_executable, [1]
++
boost_add_library, [1]
++
BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR
++
BOOST_EXPORTS_FILE
++
BOOST_INCLUDE_INSTALL_DIR
++
BOOST_INSTALL_CMAKE_DRIVERS, [1]
++
BOOST_INSTALL_EXPORTS_FILE
++
BOOST_LIB_INSTALL_DIR
++
boost_library_project, [1]
++
boost_module
++
boost_python_module
++
boost_test_run
++
boost_test_run_fail
++
BUILD_EXAMPLES
++
BUILD_PROJECTS
++
BUILD_SOVERSIONED
++
BUILD_TESTS
++
BUILD_TOOLS
++
building against
++
Building against uninstalled boost
++
bzip2
++
++ ++

C

++
++
++ ++
CMAKE_BINARY_DIR
++
CMAKE_CXX_COMPILER
++
CMAKE_INSTALL_PREFIX, [1]
++
CMAKE_PREFIX_PATH
++
COMPILE_FLAGS, [1]
++
++ ++

D

++
++
++ ++
DEBUG
++
++
feature
++
++
DEPENDS
++
DESTDIR
++
doxygen
++
DYNAMIC_RUNTIME
++
++
feature
++
++
++ ++

E

++
++
++ ++
ENABLE_DEBUG
++
ENABLE_DYNAMIC_RUNTIME
++
ENABLE_MULTI_THREADED
++
ENABLE_RELEASE
++
ENABLE_SHARED
++
ENABLE_SINGLE_THREADED
++
ENABLE_STATIC
++
ENABLE_STATIC_RUNTIME
++
EXAMPLEDIRS
++
expat
++
exported
++
External Dependencies
++
++
selectively disabling
++
++
external dependency, [1], [2], [3], [4], [5], [6], [7]
++
++ ++

F

++
++
++ ++
feature
++
++
DEBUG
++
DYNAMIC_RUNTIME
++
MULTI_THREADED
++
RELEASE
++
SHARED
++
SINGLE_THREADED
++
STATIC
++
STATIC_RUNTIME
++
++
feature_COMPILE_FLAGS
++
feature_LINK_FLAGS
++
feature_LINK_LIBS
++
features
++
find_package(Boost)
++
FindBoost.cmake
++
++ ++

I

++
++
++ ++
ICU
++
INSTALL_VERSIONED
++
installation
++
IRC
++
++ ++

L

++
++
++ ++
LIB_SUFFIX
++
LINK_FLAGS
++
LINK_LIBS
++
Lunatics
++
++
Anarchists Terrorists and
++
++
++ ++

M

++
++
++ ++
Mailing List
++
MODULAR
++
MPI
++
MULTI_THREADED
++
++
feature
++
++
++ ++

N

++
++
++ ++
NMake, [1]
++
NO_INSTALL
++
NO_MODULE
++
++ ++

O

++
++
++ ++
OUTPUT_NAME
++
++ ++

P

++
++
++ ++
Python
++
Python.h
++
PYTHON_DEBUG_LIBRARIES
++
PYTHON_EXECUTABLE
++
PYTHON_INCLUDE_PATH
++
PYTHON_LIBRARIES
++
++ ++

R

++
++
++ ++
regression tests
++
++
adding
++
++
RELEASE
++
++
feature
++
++
running all of them
++
++ ++

S

++
++
++ ++
SHARED
++
++
feature
++
++
SINGLE_THREADED
++
++
feature
++
++
soname
++
soversion
++
STATIC
++
++
feature
++
++
STATIC_RUNTIME
++
++
feature
++
++
++ ++

T

++
++
++ ++
targets
++
++
testing
++
++
Terrorists
++
++
Anarchists Lunatics and
++
++
TESTDIRS
++
testing
++
++
targets
++
++
tests
++
++ ++

U

++
++
++ ++
uninstalled tree
++
++ ++

V

++
++
++ ++
Valgrind
++
variants
++
Variants
++
verbosity
++
++
CMAKE_VERBOSE_MAKEFILE
++
++
Visual Studio, [1]
++
++ ++

W

++
++
++ ++
WINMANGLE_LIBNAMES
++
WITH_VALGRIND
++
++ ++

X

++
++
++ ++
Xsltproc
++
++ ++

Z

++
++
++ ++
zlib
++
++ ++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/git.html boost-cmake/tools/build/CMake/docs/build/html/git.html +--- boost-cmake/tools/build/CMake/docs/build/html/git.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/git.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,288 @@ ++ ++ ++ ++ ++ ++ ++ Hacking Boost.CMake with Git — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Hacking Boost.CMake with Git

++

Boost-cmake, in addition to using an alternative build system, uses ++alternate version control. This makes boost.cmake feasable: without ++distributed version control it would be very difficult to maintain a ++build system against upstream boost.

++

This document will review some common version-control procedures for ++those who are unfamiliar with git. More documentation is available at ++Hacking Boost via Git.

++

The first step is to get Git. Any recent ++version will do. On windows, git downloads come with a bash shell, so ++the commandline interface is essentially identical. There is also ++TortoiseGit, which is ++evolving quickly and quite usable.

++
++

I just want to try the HEAD of the <whatever> branch

++

Pick some directory to work in. Here I’ll use /tmp. My prompt is ++a percent sign. Clone the repository to a subdirectory called ++src. This will take a while the first time, after that things ++will be very fast.

++
% git clone git://gitorious.org/boost/cmake.git src
++Initialized empty Git repository in /tmp/src/.git/
++remote: Counting objects: 425396, done.
++remote: Compressing objects: 100% (129689/129689), done.
++remote: Total 425396 (delta 298454), reused 419119 (delta 292368)
++Receiving objects: 100% (425396/425396), 135.56 MiB | 1260 KiB/s, done.
++Resolving deltas: 100% (298454/298454), done.
++Checking out files: 100% (23865/23865), done.
++
++
++

inside this directory you’ll see the branch that is checked out:

++
% cd src
++% git branch -l
++* 1.41.0
++
++
++

This means I’m on the 1.41.0 branch, and the files are checked ++out:

++
% ls
++CMakeLists.txt     boost/           bootstrap.sh*  libs/    tools/
++CTestConfig.cmake  boost-build.jam  build/         more/    wiki/
++INSTALL            boost.css        doc/           people/
++Jamroot            boost.png        index.htm      rst.css
++LICENSE_1_0.txt    bootstrap.bat    index.html     status/
++
++
++

Now you can go ahead and do your out-of-source build.

++
++
++

I want to svn update

++

When new changes arrive upstream, you’ll want to git pull:

++
% git pull
++remote: Counting objects: 310, done.
++remote: Compressing objects: 100% (45/45), done.
++remote: Total 205 (delta 154), reused 203 (delta 152)
++Receiving objects: 100% (205/205), 49.59 KiB, done.
++Resolving deltas: 100% (154/154), completed with 81 local objects.
++From git://gitorious.org/boost/cmake
++   1818334..b945719  1.41.0     -> origin/1.41.0
++Updating 1818334..b945719
++Fast forward
++ CMakeLists.txt                                     |    6 +-
++ CTestConfig.cmake                                  |    5 +-
++...
++ 83 files changed, 1071 insertions(+), 537 deletions(-)
++
++
++
++
++

But I want a different branch than that

++

git branch -r will show your ‘remote’ branches:

++
% git branch -r
++  origin/1.40.0
++  origin/1.41.0
++  origin/HEAD -> origin/1.41.0
++  origin/master
++
++
++

This shows that in origin (the repository you cloned from), there ++are 1.40.0, 1.41.0, and master branches. To switch to e.g. the ++1.40.0 branch, you make a local branch that ‘tracks’ the upstream ++branch:

++
% git checkout -b 1.40.0 origin/1.40.0
++Branch 1.40.0 set up to track remote branch 1.40.0 from origin.
++Switched to a new branch '1.40.0'
++
++
++

Now you will see this new local branch in your branch list:

++
% git branch -l
++* 1.40.0   # the star means this one is checked out
++  1.41.0
++
++
++

And your status will show it as well:

++
% git status
++# On branch 1.40.0
++nothing to commit (working directory clean)
++
++
++

now, any git pull-ing you do will come from the upstream 1.40.0 ++branch in to your local 1.40.0 branch.

++
++
++

I have changes, how do I make a patch?

++

Just change the files and git diff:

++
% git diff
++diff --git a/CMakeLists.txt b/CMakeLists.txt
++index d2bc809..d5e055e 100644
++--- a/CMakeLists.txt
+++++ b/CMakeLists.txt
++@@ -27,6 +27,10 @@
++ cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR)
++ project(Boost)
++
+++#
+++# These are my changes
+++#
+++
++ ##########################################################################
++ # Version information                                                    #
++ ##########################################################################
++@@ -323,6 +327,7 @@ endif()
++
++ mark_as_advanced(BOOST_EXPORTS_FILE BOOST_INSTALL_EXPORTS_FILE)
++
+++# and some here too
++ # Add build rules for documentation
++ add_subdirectory(doc)
++
++
++

and mail it in.

++
++
++

Oops, I screwed up and want to revert

++

Use git reset:

++
% git reset --hard HEAD
++HEAD is now at e26008e Don't build tools by default.  All they do is break.
++
++
++
++
++

I want to switch branches

++

If you’ve already created a local branch, i.e. it appears in the ++output of git branch -l:

++
% git branch -l
++* 1.40.0
++  1.41.0
++
++
++

Then just check it out:

++
% git checkout 1.41.0
++Switched to branch '1.41.0'
++
++% git branch -l
++  1.40.0
++* 1.41.0
++
++% git status
++# On branch 1.41.0
++nothing to commit (working directory clean)
++
++
++

If not (i.e. it only appears in the output of git branch -r), ++see But I want a different branch than that.

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_images/MacInstaller.png и boost-cmake/tools/build/CMake/docs/build/html/_images/MacInstaller.png различаются +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_images/WindowsInstaller.png и boost-cmake/tools/build/CMake/docs/build/html/_images/WindowsInstaller.png различаются +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/index.html boost-cmake/tools/build/CMake/docs/build/html/index.html +--- boost-cmake/tools/build/CMake/docs/build/html/index.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/index.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,377 @@ ++ ++ ++ ++ ++ ++ ++ Boost-CMake 1.41.0.cmake0 — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Boost-CMake 1.41.0.cmake0

++

Boost.CMake (or alt.boost) is the boost distribution that all the cool kids are ++using. The effort started in earnest at BoostCon ‘07; by the end of which it was possible to do ++a basic build of boost with cmake. In 2009, the project moved out to ++git version control. Today, Boost.CMake is stable, mature, and ++supported by the developers, a large base of expert users, and ++occasionally by the authors of CMake itself.

++

boost-cmake mailing list

++
++http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
++

IRC

++
++#boost-cmake on the freenode network
++

CMake home page

++
++http://www.cmake.org
++

Source code

++
++Boost.CMake is distributed separately from upstream boost. Code ++is in a git repository at ++http://gitorious.org/boost/cmake.git. These documents correspond to ++tag 1.41.0.cmake0. See also Hacking Boost.CMake with Git.
++

Tarballs

++
++Tarballs and zipfiles are available at ++http://sodium.resophonic.com/boost-cmake/ in subdirectory 1.41.0.cmake0.
++
++
++

Users’s guide

++ ++
++ ++ ++
++

About this documentation

++

This documentation was created with Sphinx.

++

The source is in the restructuredtext files in subdirectory ++tools/build/CMake/docs/source/. Hack on them (see the ++documentation for Sphinx). ++When you’re ready to see the html:

++
make html
++
++

Once you’ve written a ton of docs, push them someplace where I can see ++them (or use git diff to send a patch).

++
++

Release checklist

++
    ++
  • Update BOOST_CMAKE_VERSION in toplevel CMakeLists.txt
  • ++
  • Update notes by version in tools/build/CMake/docs/notes_by_version.rst
  • ++
  • Reconfig cmake with BOOST_MAINTAINER set to ON
  • ++
  • set UPSTREAM_TAG in root CMakeLists.txt
  • ++
  • make make-diff
  • ++
  • Rebuild docs and commit
  • ++
  • Tag commit with BOOST_CMAKE_VERSION
  • ++
  • make do-release
  • ++
  • push tag
  • ++
  • update wiki
  • ++
++
++
++

Why “alt.boost”?

++

The ‘alt’ is a reference to the alt.* Usenet hierarchy. Here, as ++in Usenet, alt stands for Anarchists, Lunatics and Terrorists. This independent effort explores ++and applies alternate techniques/technologies in the areas of build, ++version control, testing, packaging, documentation and release ++management.

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/individual_libraries.html boost-cmake/tools/build/CMake/docs/build/html/individual_libraries.html +--- boost-cmake/tools/build/CMake/docs/build/html/individual_libraries.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/individual_libraries.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,251 @@ ++ ++ ++ ++ ++ ++ ++ Building individual libraries with cmake — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Building individual libraries with cmake

++

In a configured cmake workspace, make help will display a list of available targets. Example:

++
% make help
++The following are some of the valid targets for this Makefile:
++... all (the default if no target is provided)
++... clean
++... depend
++... edit_cache
++... install
++... install/local
++... install/strip
++... list_install_components
++... package
++... package_source
++... rebuild_cache
++... boost_date_time
++... boost_date_time-mt-shared
++... boost_date_time-mt-shared-debug
++... boost_date_time-mt-static
++... boost_date_time-mt-static-debug
++... boost_date_time-shared
++... boost_date_time-shared-debug
++... boost_date_time-static
++... boost_date_time-static-debug
++... boost_filesystem
++... boost_filesystem-mt-shared
++... boost_filesystem-mt-shared-debug
++... boost_filesystem-mt-static
++... boost_filesystem-mt-static-debug
++... boost_filesystem-shared
++... boost_filesystem-shared-debug
++... boost_filesystem-static
++... boost_filesystem-static-debug
++[etc]
++
++

You can build any target by passing it as an argument:

++
% make boost_signals-static
++[  0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/trackable.cpp.o
++[  0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/connection.cpp.o
++[100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/named_slot_map.cpp.o
++[100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/signal_base.cpp.o
++[100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/slot.cpp.o
++Linking CXX static library ../../../lib/libboost_signals-gcc41-1_35.a
++[100%] Built target boost_signals-static
++
++
++

Preprocessing

++

In build directories corresponding to a source library containing a ++CMakeLists.txt containing a boost_add_library invocation ++(e.g. build/libs/signals/src, build/libs/filesystem/src), more ++detailed targets are available:

++
% cd libs/signals/src
++% make help
++The following are some of the valid targets for this Makefile:
++  [many omitted]
++... signal_base.o
++... signal_base.i
++... signal_base.s
++... slot.o
++... slot.i
++... slot.s
++
++

making slot.i will run slot.cpp through the preprocessor:

++
% make slot.i
++Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i
++
++

If you are always interested in seeing the compiler flags you can ++enable CMAKE_VERBOSE_MAKEFILES via ccmake, or for a one-off ++just pass VERBOSE=1 on the command line:

++
% make VERBOSE=1 slot.i
++make[1]: Entering directory `/home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build'
++Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i
++cd /home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build/libs/signals/src && /usr/bin/gcc-4.1
++-DBOOST_ALL_NO_LIB=1 -DBOOST_SIGNALS_NO_LIB=1 -Dboost_signals_mt_shared_EXPORTS -fPIC
++-I/home/troy/Projects/boost/branches/CMake/Boost_1_35_0     -O3 -DNDEBUG -DBOOST_SIGNALS_DYN_LINK=1
++-pthread -D_REENTRANT -E /home/troy/Projects/boost/branches/CMake/Boost_1_35_0/libs/signals/src/slot.cpp > CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i
++
++
++
++

Tests and examples

++

Tests and examples are typically grouped into subdirectories, e.g.:

++
libs/
++  iostreams/
++    test/
++    examples/
++
++

CMake builds a parallel directory hierarchy in the build directory. If ++you are working on, say, the examples for iostreams, you can just ++cd into the directory $BUILDDIR/libs/iostreams/examples and type ++make:

++
% cd libs/iostreams/example
++% make
++[  0%] Built target boost_iostreams-mt-static
++Scanning dependencies of target iostreams-examples-boost_back_inserter_example
++[  0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-boost_back_inserter_example.dir/boost_back_inserter_example.cpp.o
++Linking CXX executable ../../../bin/iostreams-examples-boost_back_inserter_example
++[  0%] Built target iostreams-examples-boost_back_inserter_example
++Scanning dependencies of target iostreams-examples-container_device_example
++[  0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-container_device_example.dir/container_device_example.cpp.o
++Linking CXX executable ../../../bin/iostreams-examples-container_device_example
++[  0%] Built target iostreams-examples-container_device_example
++Scanning dependencies of target iostreams-examples-container_sink_example
++[  0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-container_sink_example.dir/container_sink_example.cpp.o
++
++
++
++

Building individual targets, ignoring prerequisites

++

If you find yourself working on a compiler error in a file that takes ++a long time to compile, waiting for make to check all of the ++prerequisites might become tedious. You can have make skip the ++prerequisite testing (you do this at your own risk), by appending ++/fast to the target name. For instance, bcp depends on the ++system, filesystem regex and prg_exec_monitor ++libraries:

++
% cd tools/bcp
++% make bcp
++[  0%] Built target boost_system-mt-static
++[  0%] Built target boost_filesystem-mt-static
++[ 50%] Built target boost_regex-mt-static
++[ 75%] Built target boost_prg_exec_monitor-mt-static
++[ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/add_path.cpp.o
++
++

if I make bcp/fast, the dependencies are assumed to be built ++already:

++
% make bcp/fast
++[ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/add_path.cpp.o
++[ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/bcp_imp.cpp.o
++(etc)
++
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/install_customization.html boost-cmake/tools/build/CMake/docs/build/html/install_customization.html +--- boost-cmake/tools/build/CMake/docs/build/html/install_customization.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/install_customization.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,263 @@ ++ ++ ++ ++ ++ ++ ++ Customizing the install — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Customizing the install

++

Here you’ll find ways to customize your installation. If you’re ++trying to make the install play nice with cmake’s find_package, ++see find_package(Boost).

++
++

CMAKE_INSTALL_PREFIX

++

This is a standard cmake option that sets the path to which boost ++will be installed.

++

CMake generates makefiles that play nice with DESTDIR. e.g. ++if you configure like this:

++
cmake ../src -DCMAKE_INSTALL_PREFIX=/tmp/blah
++
++

and install with DESTDIR=/foo make install, you’ll get files ++installed to /foo/tmp/blah.

++
++
++

LIB_SUFFIX

++

This defines the subdirectory of CMAKE_INSTALL_PREFIX to which ++libraries will be installed. It is empty by default. For example, ++if I’m on 64-bit fedora, I want the libs installed to ++/usr/lib64, I’d use:

++
cmake ../src -DCMAKE_INSTALL_PREFIX=/usr -DLIB_SUFFIX=64
++
++
++
++

INSTALL_VERSIONED

++

ON by default on unix, OFF on windows.

++

This is a different mangling than WINMANGLE_LIBNAMES: this ++variable controls whether boost versions will be mangled into the ++paths into which boost is installed. This option has effect only ++when CMake is run the first time: they will be set as explained ++below the first time thereafter not modified, so that the paths are ++customizable by users. (ie If you have configured a build and change ++this option, it will have no effect, you must start “from scratch”)

++

Example

++

For boost version 1.41.0, with this option ON, the installation tree ++is:

++
$CMAKE_INSTALL_PREFIX/
++  include/
++    boost-1.41.0/
++      boost/
++        version.hpp
++        ...
++  lib/
++    boost-1.41.0/
++      libboost_signals-mt-d.so
++      ...
++
++

and without it,

++
$CMAKE_INSTALL_PREFIX/
++  include/
++    boost/
++      version.hpp
++      ...
++  lib/
++    boost/
++      libboost_signals-mt-d.so
++      ...
++
++

Note: lib/ above will contain LIB_SUFFIX if set.

++

See also BUILD_SOVERSIONED

++

The relative lib and include pathnames can be controlled individually ++with the following two variables:

++
++
++

BOOST_LIB_INSTALL_DIR

++

The directory to which libs will be installed under ++CMAKE_INSTALL_PREFIX.

++
++
++

BOOST_INCLUDE_INSTALL_DIR

++

The directory to which boost header files will be installed under ++CMAKE_INSTALL_PREFIX.

++
++
++

BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR

++

This is a directory to which the targets from this boost install will ++be exported, by default ${CMAKE_INSTALL_PREFIX}/share/boost-1.41.0/cmake: this significanly eases detection of boost ++installations by CMake. The name of the files are ++BoostConfig.cmake and BoostConfigVersion.cmake [1]. ++See Tricks for Building against Boost with CMake for ++more information about how users employ this file.

++

If this is a full path, it will be used directly, otherwise it will be ++interpreted relative to ${CMAKE_INSTALL_PREFIX}.

++
++
++

BOOST_INSTALL_CMAKE_DRIVERS

++

Specifies whether generic cmake driver files should be installed, ++see the next option to customize where. This variable is ++ON by default.

++
++
++

BOOST_CMAKE_DRIVERS_INSTALL_DIR

++

There are two optional version-agnostic driver files that can be ++installed to a central location, by default ++${CMAKE_INSTALL_PREFIX}/share/boost-1.41.0/cmake.

++

named BoostConfig.cmake and BoostConfigVersion.cmake. These ++two files coordinate with Boost-1.41.0.cmake to enable cmake ++developers who use both boost and cmake to find local boost ++installations via the standard cmake incantation:

++
find_package(Boost 1.41.0 COMPONENTS thread iostreams)
++
++

These driver files should be the same from release to release.

++

This variable allows modification of this location; If this is a full ++path, it will be used directly, otherwise it will be interpreted ++relative to ${CMAKE_INSTALL_PREFIX}.

++
++
++

BOOST_EXPORTS_FILE

++

This is the path in the build tree to the file that will contain ++CMake exported targets, by default it is:

++
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Exports.cmake
++
++

See Tricks for Building against Boost with CMake for information on how to use this handy ++file when building against an uninstalled boost. This variable ++has no effect on installation, and is only useful if building separate ++cmake projects against an uninstalled boost.

++

If this is a full path, it will be used directly, otherwise it will be ++interpreted relative to ${CMAKE_BINARY_DIR}.

++
++
++

BOOST_EXPORTS_INSTALL_DIR

++

This is the path to which exported targest will be installed. By ++default it is ${BOOST_LIB_INSTALL_DIR}. This must be a ++relative path.

++

See Tricks for Building against Boost with CMake for information on how to use this handy ++file to build against an installed boost.

++

Footnotes

++ ++ ++ ++ ++ ++
[1]See also the cmake docs for find_package().
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/notes_by_version.html boost-cmake/tools/build/CMake/docs/build/html/notes_by_version.html +--- boost-cmake/tools/build/CMake/docs/build/html/notes_by_version.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/notes_by_version.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,328 @@ ++ ++ ++ ++ ++ ++ ++ Notes by Boost Version — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Notes by Boost Version

++
++

1.41.0.cmake1

++

Again, innumerable tiny tweaks.

++
++
++

1.41.0.beta1.cmake1

++

This is the first cmake beta based on upstream Boost_1_41_0_beta1. ++There are way too many enhancements to mention.

++
++
++

1.41.0.cmakebeta4

++
    ++
  • CMake minimum 2.6.4 required (found bugs with 2.6.2)
  • ++
  • Move MPI detection up
  • ++
  • Clean up output
  • ++
++
++
++

1.41.0.cmakebeta3

++
    ++
  • Build Variants and Features names switched to ENABLE_<feature> to distinguish ++from BUILD_* options.
  • ++
  • Many docs improvements
  • ++
  • Special targets for the boost-cmake maintainer
  • ++
  • BUILD_PROJECTS (= NONE|ALL|proj1;proj2;...;projN) ++variable for building only certain projects.
  • ++
  • BUILD_EXAMPLES (= NONE|ALL|proj1;proj2;...;projN) ++variable for building examples only of certain projects.
  • ++
  • LIB_SUFFIX for installing libs to nonstandard lib directory ++name, e.g. for LIB_SUFFIX=64, libs installed to $PREFIX/lib64
  • ++
  • Testing improvements: cmake now runs 2408 tests, 99% of which pass. ++This isn’t the full set, upstream is a moving target. The few ++remaining failures (assuming upstream is bug-free) are assumed to be ++problems in the testing setup, not the underlying libraries.
  • ++
  • Python: python location customizable via command line or environment ++variables, see External Dependencies.
  • ++
++

(1.41.0.cmakebeta1 and 2 omitted)

++
++
++

1.41.0 (upstream)

++

This release (as released by upstream Boost) does not contain ++CMake support. See above for independenly released CMake versions.

++
++
++

1.40.0.cmake4

++

Backport features from 1.41.0.cmakebeta3

++
++
++

1.40.0.cmake3

++

Skipped

++
++
++

1.40.0.cmake2

++
    ++
  • Modularization disabled... this can waste your source directory ++and was causing confusion.
  • ++
  • Docs tagged with specific boost-cmake release version.
  • ++
++
++
++

1.40.0.cmake1

++

From the boost-cmake list:

++
> As of now, your Boost 1.40.0 branch builds and installs without error
++> for me on Windows (Intel 11.1, Visual Studio 2009, Visual Studio 2010
++> Beta 1), Linux (GCC 4.2, GCC 4.4, Intel 11.1), and Mac OS X 10.6 (GCC
++> 4.2, Intel 11.1).
++
++

This version also includes fixes for cmake version 2.8 (as of this ++writing, in beta).

++

Special thanks in alphabetical order:

++
    ++
  • Claudio Bley
  • ++
  • Justin Holewinski
  • ++
  • Philip Lowman
  • ++
++
++
++

1.40.0.cmake0

++

This version works on windows with MSVC and linux with gcc.

++
++
++

1.40.0

++

This version is broken in the svn distribution. See later ++releases with the .cmakeN suffix.

++
++
++

1.38.0 and 1.39.0

++
++

Warning

++

-DCMAKE_IS_EXPERIMENTAL=ORLY_YARLY

++

This guard variable is included in releases of Boost.CMake through ++version 1.38. You just need to set this variable to some value (be ++creative) when running cmake for the first time to disable the ++guard.

++
++

Boost.CMake was included as an experimental system for the first time. ++It is perfectly capable of doing the basic build and install of boost. ++You must pass the argument

++
-DCMAKE_IS_EXPERIMENTAL=ORLY
++
++
++

to the initial run of cmake, or you will see an intimidating message ++explaining that Boost.CMake != Boost.Build. It looks like this:

++
-- ##########################################################################
++--
++--               Only Boost.Build is officially supported.
++--
++--                       This is not Boost.Build.
++--
++--  This is an alternate, cmake-based build system that is currently under development.
++--  To try it out, invoke CMake with the argument
++--         -DCMAKE_IS_EXPERIMENTAL=YES_I_KNOW
++--  Or use the gui to set the variable CMAKE_IS_EXPERIMENTAL to some value.
++--  This will only be necessary the first time.
++--
++--  For more information on boost-cmake see the wiki:
++--      https://svn.boost.org/trac/boost/wiki/CMake
++--
++--  Subscribe to the mailing list:
++--      http://lists.boost.org/mailman/listinfo.cgi/boost-cmake
++--
++--  NOTE:  Please ask questions about this build system on the boost-cmake list,
++--         not on other boost lists.
++--
++--  And/or check the archives:
++--      http://news.gmane.org/gmane.comp.lib.boost.cmake
++--
++-- ##########################################################################
++CMake Error at CMakeLists.txt:61 (message):
++  Magic variable CMAKE_IS_EXPERIMENTAL unset.
++
++
++-- Configuring incomplete, errors occurred!
++
++

Again, f you see this, just set that guard variable to something, to ++demonstrate your tenacity and dedication. Then things will work fine.

++

Quick and dirty HOWTO

++
% mkdir /tmp/boost
++% cd /tmp/boost
++% svn co https://svn.boost.org/svn/boost/tags/release/Boost_1_38_0 src
++% mkdir build
++% cd build
++% cmake -DCMAKE_IS_EXPERIMENTAL=ORLY -DCMAKE_INSTALL_PREFIX=/path/to/installdir ../src
++
++

At this point, you have two options: you either want to leave boost in ++place and use it there, or you want to install it to a particular ++location.

++

In-place

++
++

If you’re competent to specify header/library paths ++yourself and want to build in place:

++
% make
++
++

and your libraries will be in /tmp/boost/build/lib, and the headers in ++/tmp/boost/src, (where you’d expect them to be).

++
++

Installed to some location

++
++

This will install boost to lib/ and include/ under the ++CMAKE_INSTALL_PREFIX given above:

++
% make modularize   # shuffles some headers around
++% make install
++
++
++
++

Warning

++

In versions 1.38 and 1.39, if you want to make install, you ++must make modularize first. This is an intermediate step ++that we expect to go away in future versions.

++
++

Also note that cmake supports DESTDIR for making .deb and .rpm ++packages; see the standard cmake documentation

++
++

Known Issues

++
    ++
  • There isn’t much support for building/running tests within boost in ++these releases.
  • ++
  • In version 1.39, the BOOST_VERSION_MINOR is wrong: it is set to ++1.38. You can set this manually by looking for ++BOOST_VERSION_MINOR in the toplevel CMakeLists.txt
  • ++
  • The boost build names the boost_prg_exec_monitor and ++boost_unit_test_framework libraries with an additional trailing ++-s. You will probably need to modify your build if you use ++these libraries.
  • ++
++
++
++
++

1.35.0 - 1.37

++

There was a CMake branch that built these releases, but Boost.CMake ++was not included in the official distribution.

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/objects.inv boost-cmake/tools/build/CMake/docs/build/html/objects.inv +--- boost-cmake/tools/build/CMake/docs/build/html/objects.inv 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/objects.inv 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,6 @@ ++# Sphinx inventory version 1 ++# Project: Boost.CMake ++# Version: 1.41.0 ++boost_add_library cmake reference/boost_add_library.html ++boost_library_project cmake reference/boost_library_project.html ++boost_add_executable cmake reference/boost_add_executable.html +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/quickstart.html boost-cmake/tools/build/CMake/docs/build/html/quickstart.html +--- boost-cmake/tools/build/CMake/docs/build/html/quickstart.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/quickstart.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,348 @@ ++ ++ ++ ++ ++ ++ ++ Quickstart — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

Quickstart

++

This page describes how to configure and build Boost with CMake. By ++following these instructions, you should be able to get CMake, ++configure a Boost build tree to your liking with CMake, and then ++build, install, and package Boost libraries.

++
++

Download CMake

++

You can get it here: http://www.cmake.org/HTML/Download.html

++

There are precompiled binaries for CMake on several different ++platforms. The installation of these pre-compiled binaries is mostly ++self-explanatory. If you need to build your own copy of CMake, please ++see the CMake installation instructions.

++
++

Note

++

In these instructions, we will do things such that the Boost source ++tree (with CMake build files) is available in the directory ++$BOOST/src and that the build will happen in $BOOST/build:

++
$BOOST/
++  src/     # (source checked out to here)
++  build/   # (build output here)
++
++

Note that it is not actually necessary to set any environment ++variable BOOST, this is a convention used in this document.

++
++
++
++

Checkout / download the code

++

Tarballs and zipfiles are avaiable at ++http://sodium.resophonic.com/boost-cmake in subdirectory 1.41.0.cmake0.

++

Boost.CMake is distributed separately from upstream boost. Code is ++in a git repository at ++http://gitorious.org/boost/cmake.git. These documents correspond to ++tag 1.41.0.cmake0. You can clone the repository locally and then check out ++the tag:

++
git clone git://gitorious.org/boost/cmake.git src
++cd src
++git checkout <TAG>
++
++

where <TAG> is 1.41.0.cmake0

++
++
++

On Unix

++

Create and change to the directory that will hold the binaries that ++CMake build:

++
mkdir $BOOST/build
++cd $BOOST/build
++
++
++

Configure

++

Run the CMake configuration program, providing it with the Boost ++source directory:

++
cmake -DCMAKE_INSTALL_PREFIX=/somewhere $BOOST/src
++
++

(CMAKE_INSTALL_PREFIX defaults to /usr/local on unix and ++C:\\Program Files\Boost on windows). Replace /somewhere above ++with a path you like if the defaults aren’t okay. You’ll see output ++from cmake. It looks somewhat like this:

++
-- Check for working C compiler: /usr/bin/gcc
++-- Check for working C compiler: /usr/bin/gcc -- works
++-- Check size of void*
++-- Check size of void* - done
++-- Check for working CXX compiler: /usr/bin/c++
++-- Check for working CXX compiler: /usr/bin/c++ -- works
++-- Scanning subdirectories:
++--  + io
++--  + any
++--  + crc
++--  + mpl
++
++  (etc, etc)
++
++--  + program_options
++--  + ptr_container
++--  + type_traits
++-- Configuring done
++-- Generating done
++-- Build files have been written to: $BOOST/build
++
++

The directory $BOOST/build should now contain a bunch of generated ++files, including a top level Makefile, something like this:

++
% ls
++CMakeCache.txt           CPackConfig.cmake    Makefile
++cmake_install.cmake      libs/                CMakeFiles/
++CPackSourceConfig.cmake  bin/                 lib/
++
++
++
++

Build and Install

++

Now build and install boost:

++
make install
++
++

You’ll see:

++
Scanning dependencies of target boost_date_time-mt-shared
++[  0%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/greg_month.cpp.o
++[  0%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/greg_weekday.cpp.o
++[  1%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/date_generators.cpp.o
++Linking CXX shared library ../../../lib/libboost_date_time-mt.so
++[  1%] Built target boost_date_time-mt-shared
++
++(etc etc)
++
++[100%] Built bcp
++
++(etc etc)
++
++-- Installing: /tmp/flanboost/lib/libboost_wave-mt-d.a
++-- Installing: /tmp/flanboost/lib/libboost_wave-mt-d.so
++-- Removed runtime path from "/tmp/flanboost/lib/libboost_wave-mt-d.so"
++-- Installing: /tmp/flanboost/bin/bcp
++-- Installing: /tmp/flanboost/bin/inspect
++
++

And you’re done. Once the build completes (which make take a while, if ++you are building all of the Boost libraries), the Boost libraries will ++be in a predictable layout under the directory passed to ++CMAKE_INSTALL_PREFIX (default /usr/local)

++
++
++
++

Windows

++

There are two different sets of directions: visual studio, which is ++quite specific, and nmake, which is much like the Unix version, above.

++
++

Configuration for Visual Studio

++

Run CMake by selecting it from the Start menu.

++
    ++
  • Use the Browse... button next to Where is the source code to ++point CMake at the Boost source code in $BOOST\src.

    ++
  • ++
  • Use the second Browse... button to next to Where to build the ++binaries to select the directory where Boost will build binaries, ++$BOOST\build.

    ++
  • ++
  • Click Configure a first time to configure Boost, which will search ++for various libraries on your system and prepare the build. CMake ++will ask you what kind of project files or make files to build. If ++you’re using Microsoft Visual Studio, select the appropriate version ++to generate project files. Otherwise, you can use Borland’s make ++files. If you’re using NMake, see the next section.

    ++
  • ++
  • On an XP box with VS9 one sees roughly this in the output window at ++the bottom:

    ++
    Check for working C compiler: cl
    ++Check for working C compiler: cl -- works
    ++Detecting C compiler ABI info
    ++Detecting C compiler ABI info - done
    ++Check for working CXX compiler: cl
    ++Check for working CXX compiler: cl -- works
    ++Detecting CXX compiler ABI info
    ++Detecting CXX compiler ABI info - done
    ++Boost version 1.41.0
    ++Found PythonInterp: C:/Python26/python.exe
    ++Found PythonLibs: C:/Python26/libs/python26.lib
    ++Boost compiler: msvc
    ++Boost toolset:  vc90
    ++Boost platform: windows
    ++Could NOT find Doxygen  (missing:  DOXYGEN_EXECUTABLE)
    ++Build name: msvc-9.0-windows
    ++ + preprocessor
    ++ + concept_check
    ++ ...
    ++ + units
    ++ + wave
    ++Configuring done
    ++
    ++
  • ++
  • The messages about ‘missing doxygen’ and whatnot are not ++showstoppers for now, so long as configuration is successful. You ++will be given the opportunity to tune build options in the CMake GUI ++(see Configuring the buildspace for more detail). They will ++initially appear red. Click Configure again when you are done ++editing them. The one thing that you may wish to configure as part ++of this ‘quickstart’ is CMAKE_INSTALL_PREFIX.

    ++
  • ++
  • Finally, click Generate to generate project files. Boost.sln, ++the VS solution file, will appear in the where to build the ++binaries directory from the cmake gui.

    ++
  • ++
++
++
++

Configuration for NMake

++
    ++
  • Start a Visual Studio Command Prompt from the start menu. This ++will spawn a command prompt window with certain env variables set. ++CMake will detect these and automatically choose to generate NMake ++files.

    ++
  • ++
  • cd to $BOOST/build and execute:

    ++
    cmake ..\src
    ++
    ++

    You will see output very similar to that on unix, see ++Configure.

    ++
  • ++
++
++
++

Build – Visual Studio

++
++Start up Visual Studio, load the solution or project Boost from ++the Boost build directory you set in the CMake configuration ++earlier. Then, just click Build to build all of Boost.
++
++
++

Build – NMake

++
++Execute nmake from the command prompt in the build directory.
++
++
++

Installation

++

The installation of Boost’s headers and compiled libraries uses the ++same tools as building the library. With Microsoft Visual Studio, just ++load the Boost solution or project and build the ‘INSTALL’ target to ++perform the installation. With NMake, nmake install.

++
++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_executable.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_executable.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_executable.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_executable.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,220 @@ ++ ++ ++ ++ ++ ++ ++ boost_add_executable — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_add_library

++

Next topic

++

boost_python_module

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_add_executable

++

Adds an executable to the build

++
++
++boost_add_executable(exename source1 source2 ...)
++
++++++ ++ ++ ++ ++
Parameters:
    ++
  • source1 source2... – sourcefiles
  • ++
  • COMPILE_FLAGS flag1 flag2 ... – (optional) compile flags
  • ++
  • LINK_FLAGS flag1 flag2 ... – (optional) link flags
  • ++
  • feature_LINK_LIBS lib1 lib2 ... – (optional) link libraries
  • ++
  • DEPENDS dep1 dep2 ... – (optional) intraboost dependencies
  • ++
  • OUTPUT_NAME name – (optional) output name
  • ++
  • NO_INSTALL – (optional) don’t install
  • ++
++
++
++ ++

where exename is the name of the executable (e.g., “wave”). source1, ++source2, etc. are the source files used to build the executable, e.g., ++cpp.cpp. If no source files are provided, “exename.cpp” will be ++used.

++

This macro has a variety of options that affect its behavior. In ++several cases, we use the placeholder “feature” in the option name ++to indicate that there are actually several different kinds of ++options, each referring to a different build feature, e.g., shared ++libraries, multi-threaded, debug build, etc. For a complete listing ++of these features, please refer to the CMakeLists.txt file in the ++root of the Boost distribution, which defines the set of features ++that will be used to build Boost libraries by default.

++

The options that affect this macro’s behavior are:

++
    ++
  • COMPILE_FLAGS – Provides additional compilation flags that will be ++used when building the executable.
  • ++
++
    ++
  • feature_COMPILE_FLAGS – Provides additional compilation flags that ++will be used only when building the executable with the given ++feature (e.g., SHARED_COMPILE_FLAGS when we’re linking against ++shared libraries). Note that the set of features used to build the ++executable depends both on the arguments given to ++boost_add_executable (see the “feature” argument description, below) ++and on the user’s choice of variants to build.
  • ++
++
    ++
  • LINK_FLAGS – Provides additional flags that will be passed to the ++linker when linking the executable. This option should not be used ++to link in additional libraries; see LINK_LIBS and DEPENDS.
  • ++
++
    ++
  • feature_LINK_FLAGS – Provides additional flags that will be passed ++to the linker when linking the executable with the given feature ++(e.g., MULTI_THREADED_LINK_FLAGS when we’re linking a multi-threaded ++executable).
  • ++
++
    ++
  • LINK_LIBS – Provides additional libraries against which the ++executable will be linked. For example, one might provide “expat” as ++options to LINK_LIBS, to state that the executable will link against ++the expat library binary. Use LINK_LIBS for libraries external to ++Boost; for Boost libraries, use DEPENDS.
  • ++
++
    ++
  • feature_LINK_LIBS – Provides additional libraries to link against ++when linking an executable built with the given feature.
  • ++
++
    ++
  • DEPENDS – States that this executable depends on and links ++against a Boost library. The arguments to DEPENDS should be the ++unversioned name of the Boost library, such as ++“boost_filesystem”. Like LINK_LIBS, this option states that the ++executable will link against the stated libraries. Unlike LINK_LIBS, ++however, DEPENDS takes particular library variants into account, ++always linking to the appropriate variant of a Boost library. For ++example, if the MULTI_THREADED feature was requested in the call to ++boost_add_executable, DEPENDS will ensure that we only link against ++multi-threaded libraries.
  • ++
++
    ++
  • feature – States that the executable should always be built using a ++given feature, e.g., SHARED linking (against its libraries) or ++MULTI_THREADED (for multi-threaded builds). If that feature has ++been turned off by the user, the executable will not build.
  • ++
++
    ++
  • NO_INSTALL – Don’t install this executable with the rest of ++Boost.
  • ++
++
    ++
  • OUTPUT_NAME – If you want the executable to be generated ++somewhere other than the binary directory, pass the path (including ++directory and file name) via the OUTPUT_NAME parameter.
  • ++
++

Example

++
boost_add_executable(wave cpp.cpp
++   DEPENDS boost_wave boost_program_options
++           boost_filesystem
++           boost_serialization
++   )
++
++

Where Defined

++

This macro is defined in the Boost Core module in ++tools/build/CMake/BoostCore.cmake

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_additional_test_dependencies.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_additional_test_dependencies.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_additional_test_dependencies.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_additional_test_dependencies.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,152 @@ ++ ++ ++ ++ ++ ++ ++ boost_additional_test_dependencies — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_python_module

++

Next topic

++

boost_test_compile

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_additional_test_dependencies

++
++

Note

++

This is only needed in the presence of ‘modularization’ ++which is currently disabled.

++
++

Add additional include directories based on the dependencies of the ++library being tested ‘libname’ and all of its dependencies.

++
++
++boost_additional_test_dependencies(libname, ...
++
++++++ ++ ++ ++ ++
Parameters:
    ++
  • libname – name of library being tested
  • ++
  • BOOST_DEPENDS – libdepend1 libdepend2 ...
  • ++
++
++
++ ++

libname

++
++the name of the boost library being tested. (signals)
++

BOOST_DEPENDS

++
++The list of the extra boost libraries that the test suite will ++depend on. You do NOT have to list those libraries already listed ++by the module.cmake file as these will be used.
++

Example

++

The following invocation of the boost_additional_test_dependencies ++macro is taken from the signals library.

++
boost_additional_test_dependencies(signals BOOST_DEPENDS test optional)
++
++

Where Defined

++

This macro is defined in the Boost Testing module in ++tools/build/CMake/BoostTesting.cmake

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_library.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_library.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_library.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_add_library.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,305 @@ ++ ++ ++ ++ ++ ++ ++ boost_add_library — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++ ++
++ ++
++
++
++
++ ++
++

boost_add_library

++

This macro creates a new Boost library target that generates a compiled library ++(.a, .lib, .dll, .so, etc) from source files. This routine will ++actually build several different variants of the same library, with ++different compilation options, as determined by the set of “default” ++library variants.

++
++
++boost_add_library(libname source1 source2 ...)
++
++++++ ++ ++ ++ ++
Parameters:
    ++
  • source1 source2 ... – relative paths to source files
  • ++
  • COMPILE_FLAGS (optional) – flags to pass when compiling all variants
  • ++
  • feature_COMPILE_FLAGS (optional) – compile flags when feature is on
  • ++
  • LINK_FLAGS (optional) – link flags for all variants
  • ++
  • feature_LINK_FLAGS (optional) – link flags for feature
  • ++
  • LINK_LIBS (optional) – lib1 lib2 ...
  • ++
  • feature_LINK_LIBS (optional) – lib1 lib2 ...
  • ++
  • DEPENDS (optional) – libdepend1 libdepend2 ...
  • ++
  • STATIC_TAG
  • ++
  • MODULE (boolean) –
  • ++
  • NOT_feature (boolean) –
  • ++
  • EXTRA_VARIANTS (optional) – variant1 variant2 ...
  • ++
++
++
++ ++

where libname is the name of Boost library binary (e.g., ++“boost_regex”) and source1, source2, etc. are the source files used ++to build the library, e.g., cregex.cpp.

++

This macro has a variety of options that affect its behavior. In ++several cases, we use the placeholder “feature” in the option name ++to indicate that there are actually several different kinds of ++options, each referring to a different build feature, e.g., shared ++libraries, multi-threaded, debug build, etc. For a complete listing ++of these features, see Build Variants and Features.

++

The options that affect this macro’s behavior are:

++
++

COMPILE_FLAGS

++
++Provides additional compilation flags that will be ++used when building all variants of the library. For example, one ++might want to add "-DBOOST_SIGNALS_NO_LIB=1" through this option ++(which turns off auto-linking for the Signals library while ++building it).
++
++
++

feature_COMPILE_FLAGS

++
++Provides additional compilation flags that ++will be used only when building variants of the library that ++include the given feature. For example, ++MULTI_THREADED_COMPILE_FLAGS are additional flags that will be ++used when building a multi-threaded variant, while ++SHARED_COMPILE_FLAGS will be used when building a shared library ++(as opposed to a static library).
++
++ ++ ++ ++ ++
++

DEPENDS

++
++States that this Boost libraries depends on and links ++against another Boost library. The arguments to DEPENDS should be ++the unversioned name of the Boost library, such as ++“boost_filesystem”. Like LINK_LIBS, this option states that all ++variants of the library being built will link against the stated ++libraries. Unlike LINK_LIBS, however, DEPENDS takes particular ++library variants into account, always linking the variant of one ++Boost library against the same variant of the other Boost ++library. For example, if the boost_mpi_python library DEPENDS on ++boost_python, multi-threaded variants of boost_mpi_python will ++link against multi-threaded variants of boost_python.
++
++
++

STATIC_TAG

++
++States that the name of static library variants on ++Unix need to be named differently from shared library ++variants. This particular option should only be used in rare cases ++where the static and shared library variants are incompatible, ++such that linking against the shared library rather than the ++static library will cause features. When this option is provided, ++static libraries on Unix variants will have “-s” appended to their ++names. We hope that this is a temporary solution. At ++present, it is only used by the Test library.
++
++
++

MODULE

++
++This option states that, when building a shared library, ++the shared library should be built as a module rather than a ++normal shared library. Modules have special meaning an behavior on ++some platforms, such as Mac OS X.
++
++
++

NO_feature

++
++States that library variants containing a particular ++feature should not be built. For example, passing ++NO_SINGLE_THREADED suppresses generation of single-threaded ++variants of this library.
++
++
++

EXTRA_VARIANTS

++
++Specifies that extra variants of this library ++should be built, based on the features listed. Each “variant” is a ++colon-separated list of features. For example, passing ++EXTRA_VARIANTS “PYTHON_NODEBUG:PYTHON_DEBUG” ++will result in the creation of an extra set of library variants, ++some with the PYTHON_NODEBUG feature and some with the ++PYTHON_DEBUG feature.
++

Example

++

The Boost.Thread library binary is built using the following ++invocation of the boost_add_library macro. The options passed to the ++macro indicate that CMake should define BOOST_THREAD_BUILD_DLL to 1 ++when building shared libraries and BOOST_THREAD_BUILD_LIB to 1 when ++building static libraries. The NO_SINGLE_THREADED option inhibits ++creation of any single-threaded variants of the library (which ++obviously would not make sense for a threading library!). The flags ++needed to compile the multi-threaded variants are automatically ++added.

++
boost_add_library(
++  boost_thread
++  barrier.cpp condition.cpp exceptions.cpp mutex.cpp once.cpp
++  recursive_mutex.cpp thread.cpp tss_hooks.cpp tss_dll.cpp tss_pe.cpp
++  tss.cpp xtime.cpp
++  SHARED_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_DLL=1"
++  STATIC_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_LIB=1"
++  NO_SINGLE_THREADED
++)
++
++

This example is from libs/thread/src/CMakeLists.txt.

++

Where Defined

++

This macro is defined in the Boost Core module in ++tools/build/CMake/BoostCore.cmake.

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_library_project.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_library_project.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_library_project.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_library_project.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,194 @@ ++ ++ ++ ++ ++ ++ ++ boost_library_project — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Table Of Contents

++ ++ ++

Previous topic

++

Notes by Boost Version

++

Next topic

++

boost_module

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_library_project

++

Define a boost library project.

++
++
++boost_library_project(libname[, ...])
++
++++++ ++ ++ ++ ++
Parameters:
    ++
  • libname – name of library to add
  • ++
  • SRCDIRS (optional) – srcdir1 srcdir2 ...
  • ++
  • TESTDIRS (optional) – testdir1 testdir2 ..
  • ++
  • EXAMPLEDIRS (optional) – testdir1 testdir2 ..
  • ++
  • DESCRIPTION – description
  • ++
  • AUTHORS – author1 author2
  • ++
  • MAINTAINERS – maint maint2
  • ++
  • MODULAR (optional) –
  • ++
++
++
++ ++

where libname is the name of the library (e.g., Python, ++Filesystem), srcdir1, srcdir2, etc, are subdirectories containing ++library sources (for Boost libraries that build actual library ++binaries), and testdir1, testdir2, etc, are subdirectories ++containing regression tests.

++

DESCRIPTION provides a brief description of the library, which can ++be used to summarize the behavior of the library for a user. AUTHORS ++lists the authors of the library, while MAINTAINERS lists the active ++maintainers. If MAINTAINERS is left empty, it is assumed that the ++authors are still maintaining the library. Both authors and maintainers ++should have their name followed by their current e-mail address in ++angle brackets, with -at- instead of the at sign, e.g.,

++
Douglas Gregor <doug.gregor -at- gmail.com>
++
++
++

TESTDIRS

++

For libraries that have regression tests, and when testing is enabled ++either by BUILD_TESTS containing the (lowercase) name of this ++library or the string ALL, the generated makefiles/project files ++will contain regression tests for this library.

++
++
++

EXAMPLEDIRS

++

This option specifies directories containing examples. Examples are ++just libraries/executables created with boost_add_library ++and boost_add_executable, except they are only built if ++the name of the current project is specified in BUILD_EXAMPLES.

++
++
++

MODULAR

++

Currently unused.

++

Example

++

The Boost.Thread library uses the following invocation of the ++boost_library_project macro, since it has both a compiled library ++(built in the “src” subdirectory) and regression tests (listed in the ++“test” subdirectory):

++
boost_library_project(
++  Thread
++  SRCDIRS src
++  TESTDIRS test
++  DESCRIPTION "Portable threading"
++  AUTHORS "Anthony Williams <anthony -at- justsoftwaresolutions.co.uk">
++  )
++
++

Where Defined

++

This macro is defined in the Boost Core module in ++tools/build/CMake/BoostCore.cmake

++
++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_module.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_module.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_module.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_module.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,113 @@ ++ ++ ++ ++ ++ ++ ++ boost_module — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_library_project

++

Next topic

++

boost_add_library

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_module

++

FIXME

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_python_module.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_python_module.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_python_module.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_python_module.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,113 @@ ++ ++ ++ ++ ++ ++ ++ boost_python_module — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_add_executable

++

Next topic

++

boost_additional_test_dependencies

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_python_module

++

FIXME

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile_fail.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile_fail.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile_fail.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile_fail.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,113 @@ ++ ++ ++ ++ ++ ++ ++ boost_test_compile_fail — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_test_compile

++

Next topic

++

boost_test_run

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_test_compile_fail

++

FIXME

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_compile.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,113 @@ ++ ++ ++ ++ ++ ++ ++ boost_test_compile — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_additional_test_dependencies

++

Next topic

++

boost_test_compile_fail

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_test_compile

++

FIXME

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run_fail.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run_fail.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run_fail.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run_fail.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,103 @@ ++ ++ ++ ++ ++ ++ ++ boost_test_run_fail — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_test_run

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_test_run_fail

++

FIXME

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run.html boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run.html +--- boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/reference/boost_test_run.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,113 @@ ++ ++ ++ ++ ++ ++ ++ boost_test_run — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++

Previous topic

++

boost_test_compile_fail

++

Next topic

++

boost_test_run_fail

++

This Page

++ ++
++
++ ++
++
++
++
++ ++
++

boost_test_run

++

FIXME

++
++ ++ ++
++
++
++
++
++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/search.html boost-cmake/tools/build/CMake/docs/build/html/search.html +--- boost-cmake/tools/build/CMake/docs/build/html/search.html 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/search.html 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,110 @@ ++ ++ ++ ++ ++ ++ ++ Search — Boost.CMake 1.41.0.cmake0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++ ++
++
++ ++
++
++
++
++ ++

Search

++
++ ++

++ Please activate JavaScript to enable the search ++ functionality. ++

++
++

++ From here you can search these documents. Enter your search ++ words into the box below and click "search". Note that the search ++ function will automatically search for all of the words. Pages ++ containing fewer words won't appear in the result list. ++

++
++ ++ ++ ++
++ ++
++ ++
++ ++
++
++
++
++
++ ++ ++ ++ ++ ++ ++ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/searchindex.js boost-cmake/tools/build/CMake/docs/build/html/searchindex.js +--- boost-cmake/tools/build/CMake/docs/build/html/searchindex.js 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/searchindex.js 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1 @@ ++Search.setIndex({desctypes:{"0":"cmake"},terms:{windowsinstal:6,xpressiv:6,add_compiled_librari:6,prefix:[2,5],sleep:2,compile_flag:[19,21,7,8],whose:11,swap:6,under:[27,0,2,23,5,8],preprocess:[9,30],accum:2,everi:[1,28,17],risk:30,debug_compile_flag:11,ctest_binary_directori:2,govern:2,affect:[11,19,17,2,7],boost_prg_exec_monitor:[30,5],edit_cach:[11,30],math:6,x86_64:2,properti:[28,17,8],abil:11,xsltproc:[11,6,26,16,9],direct:[21,2,0,8],second:[21,0],asio:6,boost_filesystem:[11,19,7,8,30],disk:[11,28,17,32],individual_librari:6,usenet:9,cdashpubl:2,"new":[10,1,2,21,19,5,8],net:[13,28],"typeof":6,elimin:17,behavior:[28,17,18,19,21,7],dart_testing_timeout:[11,2],here:[9,28,10,0,11,2,21,23],studio:[9,2,0,11,32,20,5],path:[27,28,0,22,1,2,4,11,23,5,24,34,26,7,19],interpret:23,cmakedashboard:2,prg_exec_monitor:30,package_sourc:30,portabl:[21,17,8,18],ctest_initial_cach:2,unix:[9,17,0,11,32,2,19,23,8],total:10,unit:[6,0],describ:[17,0,1,2,21,8],would:[19,17,10,28],contains_test:2,with_doxygen:36,call:[28,10,11,2,21,20,17,7,8],python26:0,recommend:[28,2],type:[30,32,2],tell:[28,20],genindex:6,boost_sign:[1,30,28,17],notic:2,icu_i18n_found:34,warn:[11,2,5],include_directori:[13,28,8],hold:0,unpack:28,must:[23,17,5,28],cpacksourceconfig:0,join:28,setup:[2,5],work:[28,10,0,2,21,30,5,13],not_featur:19,extra_vari:19,root:[9,7],overrid:[6,28,22],give:[11,2],rpath:28,extended_p_squar:2,indic:[1,19,17,7,8],want:[9,10,11,2,21,19,23,5,7,8],shuffl:5,quot:[11,2],searchtool:6,how:[9,10,0,1,2,23,21,20,17,8],avaiabl:0,env:0,config:[6,2],"void":[28,0],updat:[9,28,2,10],recogn:[21,8],earlier:[13,0],boost_vers:28,befor:[21,2,8],wrong:[28,5],flanboost:0,parallel:[30,2],demonstr:5,attempt:28,third:13,encapsul:[17,2],cmake_binary_dir:[11,9,23,28],exclud:2,perform:[11,17,0],maintain:[10,5,18],environ:[22,13,5,0,28],enter:30,mxa_boost_headers_onli:13,first:[9,28,10,0,11,2,21,23,5],someplac:[9,28],order:5,oper:[32,17],feedback:2,offici:5,upstream:[6,10,5,0,9],lowman:5,becaus:8,vari:17,dwith_python:16,output_vari:2,fix:5,function_n_test:2,smart_ptr:[1,6],persist:11,easier:[11,13,17],them:[9,28,17,0,2,5,6],thei:[10,23,2,0,18],proce:8,safe:8,bane:11,bimap:6,boost_date_tim:[30,0],choic:7,dcmake_install_prefix:[23,5,0],arrow:11,each:[27,28,17,1,2,21,19,16,7,8],debug:[28,17,22,11,2,19,30,7,8],mean:[19,17,10],prohibit:17,doug:18,network:[9,8],"0x000000000000000e":11,content:[6,2],cmake_color_makefil:11,bzip2_include_dir:24,lib64:[23,5,28],boost_include_install_dir:[9,13,23],barrier:19,boost_1_41_0:6,free:5,standard:[27,11,36,4,33,34,23,5,24,26,14],fixm:[29,31,3,12,25,15],precompil:0,reconfigur:[1,11,2],angl:18,filter:11,isn:[2,5],regress:[1,9,2,18,21],confus:[28,5],rang:6,independ:[9,28],wast:5,get_properti:11,instruct:[1,21,2,0,8],alreadi:[10,2,21,30,35,8],primari:[32,8],hood:8,top:[2,0],sometim:8,orly_yarli:5,master:10,too:[11,10,5],toolset:0,mysrc2:8,mysrc1:8,tenac:5,tool:[27,9,10,0,18,30,11,32,19,17,35,6,7,8],d2bc809:10,somewhat:0,enable_:[17,5],vc90:0,target:[9,28,17,0,30,11,32,2,19,23,5],provid:[17,0,18,30,1,32,2,21,19,7,8],tree:[28,0,1,2,21,23],project:[9,28,10,0,18,30,1,2,21,11,23,17,5,8],matter:28,minut:2,dboost_signals_dyn_link:30,selftest_report:6,manner:28,incompat:19,minu:6,with_python:16,rwxr:11,memcheck:27,browsabl:2,big_test2:21,big_test1:21,simplifi:2,though:11,object:[28,17,0,30,10,6,8],regular:2,phase:11,gmane:5,boost_regex:[19,30],don:[11,10,2,7,8],doc:[9,28,10,23,5,6],doe:[27,17,1,2,5,26,8],bracket:18,onfigur:11,yes_i_know:5,dot:28,opposit:21,random:[21,6],syntax:2,winmangle_libnam:[11,9,23],identifi:[1,17],submit:[9,2],layout:[6,13,0],menu:[11,0],ccmake:[1,11,2,30],configur:[9,16,17,0,30,11,2,23,21,22,20,5,13,28,8],theme:6,png_found:8,ctest_ctest_command:2,stop:2,report:[13,2],bat:10,enable_releas:[11,9,17],visualstudioesqu:20,patch:[9,10],cleanli:28,testdir:[1,21,18],commandlin:[11,9,20,2,10],output_nam:7,result:[9,28,17,11,2,19],fail:[21,2],themselv:8,blei:5,best:2,hopefulli:1,figur:2,awai:5,irc:9,boost_use_multithread:13,imported_location_releas:28,extens:32,preprocessor:[6,0,30],howev:[19,17,7],against:[9,28,10,19,21,23,17,13,7,8],logic:6,with_mpi:33,com:[9,2,0,18],ld_library_path:28,permut:17,dougla:18,diff:[6,10,9],guid:[9,17],assum:[28,17,18,2,21,30,5,8],summar:18,bzip2_found:24,building_boost_libnam:8,three:[28,17],been:[11,28,2,7,0],accumul:[11,6,2],trigger:[11,22,2],dep1:7,interest:30,dep2:7,enable_stat:[11,9,17],tini:5,quickli:10,life:8,boostconfigagnost:6,suppress:[19,17],ani:[28,10,0,30,1,32,2,21,19,17,6,16,8],multithread:[28,17],build_test:[11,9,2,18,21],emploi:23,inhibit:[19,17],ident:10,gnu:[16,2],zlib:[6,16,4,9],compile_test:21,sln:[20,2,0],dashboard:[9,2],spawn:0,expat:[9,19,14,6,16,7],conf:6,tediou:30,sever:[19,2,7,0,8],receiv:10,make:[9,28,10,0,30,11,32,2,21,19,23,17,5,8],build_project:[11,9,5],bluequartz:13,complet:[19,17,10,7,0],screw:[9,10],hand:11,set_target_properti:28,boost_libname_dyn_link:8,kib:10,anarchist:9,tune:0,kid:9,boost_find_requir:13,thu:11,thi:[0,1,2,5,6,7,8,9,10,11,13,17,18,19,20,21,22,23,16,28,30,32,35],endif:[13,10,8],everyth:8,left:18,container_sink_exampl:30,just:[9,10,0,18,11,2,30,5,8],boost_test_run_fail:[21,6,25,9],whatnot:0,yet:11,languag:2,easi:2,explanatori:0,tast:20,boost_root:[11,13],opt:2,donat:2,link_directori:13,fusion:[21,6],specif:[17,0,11,21,19,5,8],manual:[11,5],showstopp:0,www:[9,2,0,8],right:[1,11,2,8],old:2,interv:6,excerpt:11,intern:[9,16,34],successfulli:[22,13],txt:[9,28,10,0,22,1,2,21,11,30,17,5,6,7,8,19],bottom:0,icc:2,fpic:[30,28],condit:19,foo:23,icu:[6,16,34,9],core:[19,2,7,18],plu:6,repositori:[9,2,0,10],post:2,unsaf:8,commit:[9,10],produc:[21,17,2,32],redetect:22,ppc:11,underli:[5,8],justsoftwaresolut:18,down:11,creativ:5,wrap:28,opportun:0,git:[6,10,2,0,9],wai:[28,20,2,21,22,23,5,13,8],support:[9,17,5,8],avail:[9,28,17,0,30,10],reli:8,editor:[1,21,8],gil:6,head:[9,10],build_vari:6,form:32,build_:5,"true":[13,2,20],freenod:9,reset:10,with_expat:14,supp:6,until:2,rerun:11,list_install_compon:30,featur:[9,17,11,20,19,5,16,7,8],semicolon:[11,2],xsltproc_found:26,"abstract":17,exist:8,check:[10,0,30,2,22,5,8],when:[9,28,10,0,18,11,2,4,21,19,23,17,5,24,7,8],test:[27,9,18,22,1,2,21,19,30,5,6,35],node:2,matur:9,longer:2,my_program:28,ignor:[11,9,2,8,30],time:[10,0,11,2,30,23,17,5,16,8],push:9,backward:28,adding_regression_test:6,skip:[1,22,5,8,30],dcmake_is_experiment:5,global:17,decid:8,middl:11,depend:[27,9,16,0,30,11,2,28,21,19,5,35,13,7,8],graph:6,intermedi:5,"1_35":30,"1_34":11,sourc:[9,28,10,0,18,30,1,2,21,19,20,17,5,6,7,8],string:[11,6,17,2,18],imported_link_interface_libraries_releas:28,unfamiliar:10,lrt:28,run_test:2,exact:27,cool:9,hierarchi:[9,30],level:[17,2,0],dboost_all_no_lib:30,gui:[2,0,1,20,11,5],iter:6,enable_featur:17,dir:[11,30,28,2,0],machin:2,htm:10,tss_dll:19,upstream_tag:9,sign:[10,18],boost_test:2,cost:17,port:2,big_test_dl:21,appear:[11,10,2,0],current:[28,18,32,2,21,5,35,13],macinstal:6,ctest_start_with_empty_binary_directori:2,boost:[0,1,2,5,6,7,8,9,10,11,13,17,18,19,20,21,22,23,26,27,28,30,32,35],xml:6,gener:[28,17,0,18,1,2,23,11,20,19,7],modif:23,address:[8,18],along:21,wait:30,box:[11,0],cronjob:2,png_include_dir:8,behav:28,boost_program_opt:7,extra:[17,19,32,2,35,8],tweak:[2,5],modul:[17,18,19,35,6,7,8],named_slot_map:30,prefer:11,ipp:6,visibl:2,instal:[9,28,10,0,30,1,32,2,21,11,23,5,13,7,8],installdir:5,regex:[6,30],sum_avg_port:2,thrd:28,univers:11,todai:9,subvers:2,boost_exports_fil:[9,23,10],scope:28,checkout:[9,2,0,10],dboost_signals_no_lib:[19,30],boost_lib_install_dir:[9,13,23],capit:1,libdepend2:[19,35],peopl:10,enhanc:5,visual:[9,2,0,11,32,20,5],oop:[9,10],effort:[9,28],graphic:[32,8],boost_cmake_drivers_install_dir:[9,23],prepar:0,uniqu:17,function_typ:6,whatev:[9,10,34],xinclud:[11,26],gitlex:6,sourcefil:7,predict:0,multi_threaded_link_flag:[19,7],topic:28,independenli:5,no_featur:19,occur:5,alwai:[11,19,7,30],multipl:[21,9,28,8],write:[5,8],foreach:6,docbook_dtd_dir:11,xsltproc_execut:26,clone:[10,0],valgrind_flag:27,usabl:10,intrus:6,mac:[11,19,32,17,5],mai:[11,17,2,28,0],drastic:17,install_vers:[11,9,13,28,23],cmakebeta3:[9,5],cmakebeta1:5,nullsoft:32,favorit:[1,21,8],mangl:[11,9,23,17,28],inform:[33,28,10,11,36,2,21,23,17,5,13,14,8],"switch":[11,9,20,10,5],combin:[17,8],talk:28,anticip:2,recommendataion:2,circular_buff:6,gitignor:6,still:[17,18],dynam:17,findboost:[13,28],group:[11,30],thank:5,platform:[19,21,32,2,0],window:[9,10,0,1,32,2,11,23,17,5,8],mail:[9,10,5,18],main:[6,28],non:[21,17],halt:2,initi:[11,10,2,5,0],therebi:16,now:[10,0,2,21,5,8],valgrind_found:27,name:[9,28,17,0,18,30,1,32,2,21,11,23,5,35,7,8,19],simpl:[11,21,8],didn:28,revert:[9,10],separ:[9,0,11,2,19,23,8],compil:[9,28,17,0,18,30,1,2,21,11,20,19,24,16,7,8],replac:[28,0],individu:[9,17,2,23,30],continu:[9,2],d_reentrant:30,backport:5,significantli:2,year:13,happen:[16,0],simple_test:21,jackson:13,space:17,profit:20,correct:28,after:[11,21,10,8],argument:[28,30,11,21,19,5,7],org:[9,10,0,2,5,8],"byte":6,care:2,couldn:20,thing:[10,28,2,5,0],place:[2,5],buildspac:[11,9,0],star:10,silver:2,lambda:6,origin:10,enable_debug:[11,9,17],directli:[23,17],onc:[9,0,22,1,2,21,19],arrai:6,with_bzip2:24,yourself:[11,30,5],reopen:2,build_bcp:11,"long":[30,2,0],oppos:19,dbuild_whatev:2,open:20,size:0,given:[28,17,0,19,5,16,7],breviti:28,convent:[28,17,0],conveni:11,knowledg:17,copi:[17,2,0],boost_exports_install_dir:[9,23],specifi:[28,18,22,11,2,19,23,5,8],python_nodebug:19,enclos:2,boost_include_dir:[13,28],mostli:0,than:[9,17,19,23,10,7,8],png:[6,10,8],targest:23,dbuilding_boost_libnam:8,feature_link_flag:[19,9,17,7],posix:6,pre:0,sai:[11,21,8,30],bootstrap:10,reader:2,dash:2,docbook_xsl_dir:11,zlib_librari:4,techniqu:9,note:[9,28,17,0,11,2,23,22,20,5,35,7],take:[10,0,19,2,30,7],cmake_prefix_path:28,noth:10,enable_shar:[11,9,17],begin:17,sure:[21,2,8],normal:19,track:10,compress:[32,10],toplevel:[11,9,28,2,5],beta:5,unit_test_framework:13,later:[2,5],runtim:0,cmakelist:[9,28,10,30,1,21,11,5,6,7,8,19],troi:[11,30,28,2],boost_mpi_python:19,show:[27,28,10,11,2,20,17],atom:17,maint:18,hack:[9,10],slot:30,onli:[28,10,18,22,1,32,2,21,11,23,17,5,6,35,7,8,19],activ:[11,18],written:[9,2,0],jamroot:10,ubla:6,lib_function_test:2,cpack:32,variou:[11,17,0],get:[28,10,0,1,2,11,23,17],not_multi_thread:8,contains2_test:2,ssl:6,cannot:[28,8],requir:[21,28,17,5,8],boost_test_run:[21,6,3,9],sonam:11,cpackconfig:0,where:[9,17,0,18,1,2,21,19,23,5,35,7],wiki:[9,10,5],boost_python:19,darwin:[21,2],nonstandard:[11,28,2,5],detect:[17,0,34,11,36,4,33,22,23,5,24,13,14,16],review:10,git_diff:6,listinfo:[9,5],between:[6,17,9],"import":[28,17,8],across:21,comp:5,screen:2,type_trait:[6,0],gregorian:0,boost_back_inserter_exampl:30,collect2:28,libboost_wav:0,pythonlib:0,come:[10,2],function_test_fail1:2,boostextern:6,mani:[21,30,13,5,8],function_test_fail2:2,color:11,colon:19,rebuild:[9,2,8],invers:2,boost_1_38_0:5,enable_multi_thread:[11,9,17],boostcon:9,thousand:2,bmp:6,graph_parallel:[6,2],workspac:30,ctestcustom:6,i18n:34,spirit:6,those:[10,17,2,35,8],boostcor:[11,6,7,18,19],"case":[19,17,2,7,28],trick:[9,13,28,23],invok:[1,11,2,5],invoc:[18,30,1,19,35,8],findicu:[6,8],lrwxrwxrwx:11,worri:8,blah:23,with_valgrind:27,pthread:[30,28,17],"return":[21,28],sovers:11,develop:[9,28,32,2,22,23,5,13],boost_find_quietli:13,alphabet:5,same:[28,0,11,32,2,19,23,8],binari:[9,0,18,1,32,2,11,19,7,8],html:[6,10,9,0,8],document:[9,28,10,0,36,2,33,5,14,8],finish:[21,2],boost_library_project:[9,18,1,21,11,6,8],driver:23,capabl:[5,8],improv:[17,5],extern:[27,9,28,19,5,6,16,7,8],tss_hook:19,"break":10,searchindex:6,macro:[17,18,11,21,19,35,7,8],multi_index:6,reconfig:9,without:[11,10,23,2,5],imported_soname_releas:28,roughli:0,situat:28,execut:[27,28,17,0,18,30,11,32,2,21,22,20,26,7],tip:27,rest:7,aspect:11,boostconfig:[6,23,17],lib2:[19,7],lib1:[19,7],function_arith_cxx98:2,rebuild_cach:[11,30],littl:2,multi_threaded_compile_flag:19,identif:[16,2],function_arith_porta:2,bcp_imp:30,boost_platform:11,earli:8,cregex:19,around:5,read:2,dart:2,dark:[6,13],earnest:9,dirti:5,disjoint_set:6,boost_modul:[31,6,9],integ:6,server:2,either:[28,18,1,2,22,5,8],"_static":6,output:[27,28,10,0,11,32,2,21,22,5,16,7],manag:9,boost_add_librari:[9,17,18,30,11,19,6,8],intact:20,link_flag:[19,7,8],cmake_install_prefix:[9,28,0,11,23,5,13],basic:[21,6,5,9],definit:[17,8],lunat:9,exit:[11,21,28],boost_dir:[9,28],refer:[9,17,19,6,13,7,8],ration:6,boost_install_exports_fil:10,broken:5,boost_wav:7,src:[28,10,0,18,22,1,2,30,11,23,5,6,16,8,19],central:[23,2],stand:9,routin:[19,8],strip:30,your:[28,10,0,22,1,2,23,21,11,20,5,30,13,8],fast:[30,10],log:2,area:9,aren:[13,0],start:[9,17,0,11,2,21,23,8],interfac:[11,10],lot:[6,2],unam:2,tupl:6,intraboost:7,faster:17,pull:[11,10],nmake:[11,9,2,0],possibl:[9,2],"default":[9,28,10,0,22,11,30,19,23,17,16,7,8],static_compile_flag:19,unusu:28,multi_arrai:6,connect:30,boost_depend:[21,35],creat:[9,28,10,0,18,1,32,2,21,11,17,19,8],scriptabl:32,file:[9,28,10,0,18,22,1,35,2,30,21,11,23,17,19,6,13,7,8],momentarili:2,cmakecach:[11,9,17,0,22],valid:30,compet:5,pathnam:23,you:[27,9,16,10,0,22,1,2,28,21,11,23,17,5,30,35,13,7,8],symbol:[17,8],cmake_minimum_requir:10,feature_link_lib:[19,9,17,7],fatal_error:10,reduc:2,dboost_thread_build_lib:19,directori:[28,10,0,18,30,11,2,23,21,22,20,5,35,7,8],descript:[7,18],gitori:[9,10,0],cpp:[28,17,0,19,21,30,6,7,8],escap:[11,2],unset:5,all:[9,28,10,0,18,30,11,32,2,19,17,5,35,16],forget:[11,2],build_libnam:8,zinc:2,follow:[26,27,28,17,0,18,30,1,32,2,4,21,19,23,35,24,34,13,8],alt:[6,9],smp:2,python_execut:[9,16,22],cmake_c_compil:2,program:[28,17,0,11,32,2,8],std_bind_port:2,introduc:[1,17],icu_include_dir:34,far:17,mpl:[6,0],faq:[6,20,9],mpi:[9,2,33,5,6,16],util:[6,2],failur:5,veri:[10,17,2,0,8],doctool:6,statechart:6,boost_add_execut:[6,7,18,9],list:[9,28,10,18,30,11,2,21,19,17,5,35,7,8],helloworld:28,boost_thread:[19,28,17],lpthread:[28,17],small:6,install_custom:6,function_30:2,past:2,zero:21,pass:[28,0,30,11,2,21,19,5,7,8],what:[20,17,2,0,8],navig:[6,20],abi:0,section:[21,13,2,0,8],abl:[17,0],brief:18,delet:[11,6,10,22],version:[9,28,10,0,11,32,2,23,17,5,6,13,8],program_opt:[6,13,0],full:[17,11,2,34,23,5],hash:6,allocator_test:2,modular:[35,5,18],trunk:2,modifi:[22,23,20,5],valu:[11,2,5,8],search:[27,28,0,6,26,8],boost_test_compil:[21,6,29,9],ahead:10,boost_library_vari:11,pick:[20,10],via:[9,28,10,30,14,2,36,4,21,22,23,5,24,34,33,13,7,8],readili:17,cmake4:[9,5],cmake1:[9,5],cmake0:[9,5,0],cmake3:[9,5],cmake2:[9,5],select:[11,0],distinct:17,two:[28,0,2,21,22,23,5],link_lib:[19,7,8],taken:35,findpng:8,toggl:[11,17],more:[33,28,10,0,11,36,32,2,23,16,30,20,17,5,13,14,8],add_execut:28,tester:2,cmaken:5,flag:[27,9,17,30,19,2,21,22,20,24,7,8],particular:[17,11,19,5,7,8],known:[9,5],cach:[11,2],none:[11,17,2,5],enable_if:6,remain:[5,8],learn:2,deb:5,add_librari:28,prompt:[10,2,0],scan:[30,0],challeng:8,share:[28,17,0,30,11,21,19,23,7,8],minimum:5,explor:[9,2],revis:2,unlucki:2,rather:[19,17,8],anoth:[19,32,17],readelf:11,kitwar:2,css:[6,10],regener:[11,20],variant:[9,17,11,2,19,5,6,7,8],catalog:6,okai:0,associ:[16,8],stabil:11,author:[9,18],caus:[1,19,5],container_device_exampl:30,checkbox:20,help:[30,17,2,28,8],execute_process:2,signal_bas:30,i386:11,through:[19,30,17,5],minmax:6,paramet:[19,6,7,35,18],boost_version_minor:5,sodium:[9,0],brows:0,relev:22,pend:28,projn:5,might:[19,21,7,30],good:11,droppabl:2,no_instal:7,icpc:2,dpython_include_path:22,magic:[20,5],complain:22,build_instal:6,mxa_boost_compon:13,proj2:5,e26008:10,proj1:5,compiletest:6,unlik:[19,7],dbuild_test:2,easili:[32,8],token:6,found:[27,0,34,4,22,5,24,26,8],unicod:[9,16,34],subsystem:2,dcmake_cxx_compil:[11,2],hard:10,procedur:10,expect:[21,5],add_boost_librari:6,todo:[6,2],footnot:[23,17,28],advanc:[11,20,2],intel:[2,5],quick:5,reason:[11,2],base:[9,17,1,2,21,19,5,35,8],ask:[20,5,0],release_compile_flag:[11,20,17],icu_found:34,bash:10,thread:[28,17,18,11,19,23,6,7,8],omit:[11,30,5],perhap:[11,13,8],perman:11,assign:6,install_m:6,intimid:5,number:[17,2],placehold:[19,7],done:[11,10,2,0,21],author1:18,author2:18,dylib:17,stabl:9,miss:[11,0],valgrind_execut:27,differ:[9,10,0,19,32,2,21,23,17,6,7,8],script:[32,2],ton:9,scheme:2,store:[11,21],option:[9,17,0,18,22,11,2,23,21,19,20,35,5,6,16,7,8],build_inspect:11,checklist:9,appropri:[11,28,7,0,8],pars:2,std:28,notfound:11,kind:[19,17,7,0],grep:[11,17,2,28],whenev:8,remot:10,zipfil:[9,0],remov:0,boostdoc:6,jqueri:6,reus:10,dlib_suffix:23,greg_month:0,well:[28,10],packag:[9,0,32,30,5,13,8],dedic:5,built:[28,17,0,18,22,11,21,19,30,5,7,8],lib:[28,10,0,22,1,30,21,11,23,17,5,6,13,8,19],self:[32,0],enable_single_thread:[11,9,17],also:[9,28,10,11,2,23,21,20,17,5,13,8],exampl:[9,28,17,18,30,11,2,21,19,23,5,6,35,7,8],build:[9,28,10,0,18,30,1,35,32,2,23,21,11,20,17,5,6,13,7,8,19],notes_by_vers:[6,9],distribut:[9,28,10,0,11,5,7],previou:[2,8],most:[11,21,28,17],test_exec_monitor:13,lambda_test:2,plan:13,cmakefil:[30,28,0],maco:2,boost_libnam:[21,8],builddir:30,filesystem:[11,6,8,18,30],part:[0,1,32,2,21,34,8],clean:[30,10,5],microsoft:[11,32,17,0],fine:5,find:[28,0,30,1,20,11,23,13,8],copyright:2,solut:[19,2,0],cmake_library_output_directori:23,libboost_sign:[11,30,23,17],boost_test_compile_fail:[21,6,15,9],unus:18,express:2,interprocess:6,with_:16,"_secure_scl":[9,20],updatectestconfigur:2,crc:[6,0],common:[10,8],reattempt:16,set:[26,9,28,10,0,22,11,2,23,4,16,19,20,17,5,24,34,27,13,7,8],see:[0,1,2,5,7,8,9,10,11,13,14,17,19,20,22,23,27,28,30,32,33,36],arg:21,close:2,expert:9,someth:[28,0,11,2,22,5],mutex:19,altern:[9,28,2,5,10],numer:6,libnam:[18,1,21,19,35,8],lowercas:[11,18],distinguish:[17,5],dartconfigur:2,ctest:[21,27,2],both:[18,11,21,23,7,8],compile_fail:21,mem_fun_port:2,enable_whatev:11,"_templat":6,context:17,png_definit:8,whole:2,load:0,simpli:[11,28],python_debug_librari:[9,16,22],point:[28,2,5,0],schedul:2,boostutil:6,except:[19,6,18],header:[0,1,34,23,5,13,8],suppli:[11,8],boostconfigversionagnost:6,empti:[23,10,16,18],build_tool:[11,9],unvers:[19,7],nonexist:28,anthoni:18,imag:32,"_sourc":6,look:[28,0,1,2,11,5,8],histor:11,"while":[10,0,18,19,2,21,20,8],abov:[28,17,0,11,2,23,5],error:[11,30,28,2,5],loop:[21,2],ptr_contain:[6,0],real:[28,8],resophon:[9,2,0],readi:9,itself:[9,17,2,8],costli:17,multi_threaded_link_lib:[19,17],fedora:23,shorter:28,winmangled_libnam:11,flag2:7,flag1:7,conflict:8,optim:17,"_found":16,wherea:2,covari:2,any_test:2,temporari:19,user:[9,17,18,11,32,2,21,23,7,8],stack:11,recent:[11,10],travers:11,task:2,older:13,find_packag:[9,28,36,4,33,34,23,24,13,14],entri:[22,20],grind:2,feasabl:10,dndebug:[11,30],boost_python_modul:[6,12,9],cmaketest:28,cout:28,restructuredtext:9,output_strip_trailing_whitespac:2,any_to_ref_test:2,extended_p_square_quantil:2,bin:[28,0,30,11,2,22,6],format:6,big:28,bit:[23,2],boost_cmake_infrastructure_install_dir:[9,23,28],success:[21,13,16,0],cmakebeta4:[9,5],signal:[28,17,30,1,11,19,6,35],resolv:10,collect:[20,2],error_of:2,docbook_autoconfig:11,function_ref_portabl:2,often:[21,17],dllimport:8,creation:[19,17],some:[28,10,19,2,21,30,17,5,8],per:[9,17,11,2,20,8],makecommand:2,larg:[9,2],proj:28,cgi:[9,5],run:[27,28,17,0,30,1,32,2,23,21,11,20,5,8],step:[10,1,32,2,21,11,5,8],prerequisit:[9,30],orli:5,cmake_is_experiment:5,libdepend1:[19,35],boost_maintain:9,significanli:23,plai:23,nsi:32,proto:6,add_path:30,within:[2,5,8],ensur:7,chang:[9,10,0,2,23,20,17,6,8],next:[23,17,2,0],compile_fail_test:21,shared_compile_flag:[19,7,8],gcc41:[11,30],question:[20,2,5],xtime:19,custom:[9,13,2,23],boost_thread_build_lib:19,includ:[28,17,0,22,11,2,4,19,23,35,5,24,6,13,7,8],suit:35,forward:10,properli:1,reorgan:2,pwd:2,link:[9,28,17,0,30,11,2,4,21,19,24,7,8],build_exampl:[11,9,2,5,18],delta:10,line:[28,17,30,1,2,21,22,5,24],info:0,utc:2,consist:13,build_boost_wseri:11,similar:[11,21,0],innumer:5,zlib_include_dir:4,quickbook:[11,6],feature_compile_flag:[19,9,17,7],curs:11,with_icu:34,cdash:2,no_single_thread:19,incomplet:5,cmake:[0,1,2,4,5,6,7,8,9,10,11,13,14,16,17,18,19,20,21,22,23,24,26,27,28,30,32,33,34,35,36],"_imag":6,nice:23,william:18,sphinxdoc:6,svn:[9,2,5,8,10],algorithm:6,set_properti:28,date_gener:0,holewinski:5,code:[21,9,17,0],"1_40":11,"1_41":13,scratch:[11,23],exenam:7,with_zlib:4,bjam:13,property_map:6,boost_1_41_0_beta1:5,send:9,pulldown:11,evolv:10,tr1:6,sens:[19,17],sensic:17,unzip:11,end:9,wave:[11,6,7,0],mem_fun_cxx98:2,wipe:2,random_test:21,tri:28,tortoisegit:10,std_bind_cxx98:2,button:0,michael:13,maint2:18,"try":[9,28,10,11,21,23,5],pleas:[7,5,0],smaller:17,relink:8,claudio:5,cron:2,download:[9,32,10,0],click:[20,0],append:[19,30,28,8],compat:[6,28],index:[6,2,10],experiment:[2,5],can:[9,28,10,0,18,30,1,32,2,21,11,23,17,5,8],inspect:[6,0],usag:21,b945719:10,let:[2,8],ubuntu:2,lib_suffix:[9,23,5,28],becom:30,sinc:[16,28,8,18],convers:6,python_found:16,technolog:9,typic:[28,17,30,2,22,8],explain:[23,5],apr:2,appli:[11,9,17],python_include_path:[9,16,22],"boolean":[19,17],cmake_instal:0,from:[9,28,10,0,22,1,32,2,21,11,23,17,5,35,8,19],gregor:18,modularize_librari:6,dynamic_runtim:17,gcc40:17,few:[11,9,17,5,8],gcc43:11,usr:[28,0,30,11,2,22,23,8],trail:[2,5],actual:[17,0,18,1,19,7],"static":[28,17,19,21,30,8],account:[19,7],dcmake_c_compil:2,oct:11,rdynam:28,obvious:19,control:[9,28,10,11,23,16],quickstart:[9,0,1,32,2,11,6],tar:32,process:[21,32,28,2,8],lock:17,high:17,tag:[9,2,5,0],tarbal:[9,32,0],msvc:[5,0],serial:6,boost_iostream:30,gcc:[11,30,2,5,0],filepath:2,imported_configur:28,subdirectori:[9,28,10,0,18,30,1,2,21,11,23,8],instead:[11,18],boost_seri:7,xsltproc_flag:[11,26],essenti:10,function_ref_cxx98:2,bind:6,sit:28,correspond:[11,9,17,0,30],element:17,issu:[9,5],multi_thread:[17,7,8],allow:[11,23,8],ener:11,build_sovers:[11,9,23],move:[9,2,5],selftest_lib:6,comma:2,bunch:0,srcdir:[1,8,18],tss:19,ctestconfig:[6,10],python:[9,0,18,11,2,22,5,6,16],auto:19,overal:17,handi:[23,2],mention:[11,2,5],somewher:[7,0],trac:5,anyth:2,edit:[11,22,0],tran:6,mark_as_advanc:10,mode:[11,20,17],pygment:6,subset:2,libboost_date_tim:0,concept_check:[6,0],dgregor:[21,2],python_librari:[9,16,22],our:[21,2,8],boost_additional_vers:13,special:[19,17,5],out:[9,28,10,0,2,21,5,8],variabl:[26,27,28,17,0,34,11,2,4,16,22,23,5,24,13,8],reload:[2,8],rel:[19,23,17,8],recursive_mutex:19,red:0,iostream:[28,11,2,30,23,6,8],insid:[10,28,2],boost_system:[11,30],releas:[9,28,17,11,2,23,20,5,6,8],philip:5,boost_install_cmake_driv:[9,23,28],linktest:6,could:[11,21,17,0],timer:6,counterpart:17,intel64:2,outsid:28,retain:17,single_thread:[17,8],suffix:5,flyweight:6,perfectli:5,mkdir:[2,5,0],system:[28,10,0,30,1,32,2,21,11,17,5,6,8],messag:[2,5,0],"final":[2,0],shell:[11,10,32,2],ctest_cvs_command:2,rst:[6,10,9],exampledir:[1,11,18],cmake_osx_architectur:[11,9],date_tim:[6,0],trackabl:30,thereaft:23,linker:[9,28,17,19,20,7,8],myproject:28,ctest_command:2,have:[9,28,10,0,18,30,1,2,21,11,23,17,5,35,13,8,19],reserv:2,need:[28,17,0,1,32,2,21,11,5,35,13,8,19],turn:[19,2,7],buildinfo:6,pydebug:17,build_configur:6,bzip2_librari:24,icu_librari:34,mib:10,dynamic_bitset:6,builtin:2,which:[9,28,10,0,18,1,32,2,21,11,23,17,5,35,7,8,19],singl:[19,17,8],preliminari:11,who:[17,10,23],discov:28,eight:2,cmake_verbose_makefil:[11,9,20,30],why:9,gather:2,request:7,determin:[11,19],no_modul:28,occasion:9,dllexport:8,text:[1,21,8],verbos:[11,30,28,2],bring:[17,2],ctest_cmake_command:2,locat:[11,23,5,28],boost_cmake_vers:[6,9],should:[28,17,0,18,22,1,2,21,11,23,19,6,7,8],jam:[6,10],suppos:[21,2],local:[28,10,0,30,11,2,22,23,6],hope:19,srcdir2:18,srcdir1:18,big_test:21,enabl:[17,18,11,2,30,23],set_asid:6,dpython_librari:22,contain:[28,17,0,18,30,1,32,2,21,19,23,5,8],thisvers:6,tss_pe:19,view:[11,2],modulo:17,cmake_cxx_compil:[11,9,2],jamfil:6,target_link_librari:28,gmail:18,statu:[10,28,2],dpython_execut:22,dll:[1,19,17,8],state:[19,7,8],selftest_main:6,boostconfigvers:[6,23],kei:11,boost_additional_test_depend:[21,6,35,9],static_tag:19,job:2,entir:22,endl:28,addit:[17,19,10,5,35,7,8],doxygen:[6,16,36,0,9],valgrind:[27,6,16,9],etc:[17,0,18,19,2,30,16,7,8],instanc:[11,30,28,17],ctestnightli:2,comment:2,static_runtim:17,cxx:[30,16,2,28,0],enable_static_runtim:[9,17],arriv:10,commenc:2,respect:[21,8],rpm:5,quit:[10,0],mailman:[9,5],zlib_found:4,compon:[9,28,17,34,23,16,13],build_vers:11,certain:[17,5,0,8],inv:6,presenc:35,togeth:8,lboost_thread:28,present:[1,11,28,19,22],multi:[19,17,7,8],dboost_signals_mt_shared_export:30,exported_target:6,defin:[17,18,19,23,35,7,8],cvscommand:2,customiz:[23,5],site:2,testdir2:18,testdir1:18,archiv:[17,5],fiddl:28,boost_use_static_lib:13,cmake_system_prefix_path:28,terrorist:9,parti:13,boost_unit_test_framework:5,handl:8,stateless_test:2,difficult:10,nightli:[9,2],http:[9,2,5,0,8],hostnam:2,again:[28,2,0,11,20,5],effect:[11,23],sooner:2,php:2,expand:17,off:[28,17,30,11,19,23,13,7,16],bzip2_definit:24,drone:2,command:[27,17,0,22,1,2,30,21,11,20,5,13],choos:[11,2,0],usual:[11,2,8],license_1_0:10,boost_librari:28,tcl:2,variant1:19,variant2:19,static_assert:6,wed:2,makefil:[0,18,30,1,32,2,11,23,6],add:[28,10,18,19,2,21,35,7,8],match:11,agnost:23,howto:5,source2:[19,7],source1:[19,7],know:[1,28],press:11,python3:22,signals2:6,insert:[6,10],d5e055:10,resid:[1,21,2,8],like:[28,0,22,1,2,21,11,23,5,7,19],python_debug:19,corpor:2,boosttest:[6,35],unord:6,necessari:[21,28,5,0],dboost_thread_build_dl:19,page:[1,9,21,0,8],sum_avg_cxx98:2,revers:11,boost_1_35_0:30,linux:[11,17,2,5,28],stat:6,destdir:[23,5],easis:[],"export":[22,23,28,8],home:[9,28,2,30],librari:[0,1,2,4,5,7,8,9,11,13,17,18,19,21,22,23,24,16,28,30,34,35],tmp:[23,10,5,0],incant:23,borland:0,avoid:17,dboost_libname_dyn_link:[21,8],leav:[2,5],doxygen_execut:0,vs9:0,greg_weekdai:0,boost_thread_build_dl:19,simpler:28,about:[9,28,0,1,2,11,23,5,13],rare:19,justin:5,fals:16,disabl:[17,11,2,5,35,16,8],own:[21,30,2,0,8],boost_library_dir:13,png_librari:8,automat:[9,17,0,11,2,19],due:2,guard:5,much:[28,17,5,0],pool:6,"function":[6,32,2],beta1:[9,5],subscrib:5,uninstal:[9,23,28],eas:[23,28],bug:5,ctest_source_directori:2,count:[10,2],dmg:32,whether:[11,23,16,8,28],wish:0,icu_i18n_librari:34,displai:[11,30,2],troubl:28,below:[6,13,7,23],otherwis:[23,0,8],problem:[28,5],ctest_cvs_checkout:2,"int":28,dure:[11,13],extran:17,ing:10,extra_sourc:8,probabl:[11,5],bzip2:[6,16,24,9],hpp:[6,23,28],percent:10,detail:[6,28,0,30],other:[9,28,11,32,2,21,19,5,13,7,8],bool:11,futur:5,branch:[9,10,2,30,5,8],varieti:[19,28,7,32],pythoninterp:0,libboost_thread:[11,28],png_png_include_dir:8,enable_dynamic_runtim:[9,17],cmake_build_typ:11,add_subdirectori:10,sphinx:9,coordin:23,rule:[10,8],libpython3:22,bcp:[6,0,30]},titles:["Quickstart","Adding a Library Project","Testing","boost_test_run","Zlib","Notes by Boost Version","Differences between this release and upstream","boost_add_executable","Adding a Compiled Library to CMake","Boost-CMake 1.41.0.cmake0","Hacking Boost.CMake with Git","Configuring the buildspace","boost_python_module","find_package(Boost)","Expat","boost_test_compile_fail","External Dependencies","Build Variants and Features","boost_library_project","boost_add_library","FAQ","Adding Regression Tests","Python","Customizing the install","BZip2","boost_test_run_fail","Xsltproc","Valgrind","Tricks for Building against Boost with CMake","boost_test_compile","Building individual libraries with cmake","boost_module","Building a Binary Installer","MPI","ICU (International Components for Unicode)","boost_additional_test_dependencies","Doxygen"],modules:{},descrefs:{"":{boost_add_library:[19,0],boost_library_project:[18,0],boost_add_executable:[7,0]}},filenames:["quickstart","add_boost_library","testing","reference/boost_test_run","externals/zlib","notes_by_version","diff","reference/boost_add_executable","add_compiled_library","index","git","build_configuration","reference/boost_python_module","find_package_boost","externals/expat","reference/boost_test_compile_fail","externals/index","build_variants","reference/boost_library_project","reference/boost_add_library","faq","adding_regression_tests","externals/python","install_customization","externals/bzip2","reference/boost_test_run_fail","externals/xsltproc","externals/valgrind","exported_targets","reference/boost_test_compile","individual_libraries","reference/boost_module","build_installer","externals/mpi","externals/icu","reference/boost_additional_test_dependencies","externals/doxygen"]}) +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,57 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _add_boost_library_project: ++ ++Adding a Library Project ++======================== ++ ++This page describes how to introduce a new Boost library project into ++the CMake-based build system. Any Boost library that provides a ++library binary (e.g., ``boost_signals.dll``) or has regression tests ++(hopefully, every Boost library!) will need to be part of the build ++system. ++ ++To introduce a new library, which resides in the subdirectory ++``libs/libname``, follow these steps: ++ ++1. Create a new file ``libs/libname/CMakeLists.txt`` with your ++ favorite text editor. This file will contain an invocation of the ++ :ref:`boost_library_project_macro`, which ++ identifies each Boost library to the build system. The invocation ++ of the ``boost_library_project`` will look like this:: ++ ++ boost_library_project( ++ Libname ++ SRCDIRS src ++ TESTDIRS test ++ EXAMPLEDIRS test ++ ) ++ ++ where ``Libname`` is the properly-capitalization library name, ++ e.g., ``Signals`` or ``Smart_ptr``. The ``SRCDIRS src`` line should ++ only be present if your Boost library actually needs to compile a ++ library binary; header-only libraries can skip this step. The ++ ``TESTDIRS test`` line indicates that the subdirectory ``test`` ++ contains regression tests for your library. Every Boost library ++ should have these. ++ ++2. Re-run CMake (see :ref:`quickstart`) to reconfigure the source ++ tree, causing CMake to find the new Boost library. CMake can be ++ re-run either from the command line (by invoking ``cmake ++ /path/to/boost`` or ``ccmake /path/to/boost``) or, on Windows, ++ using the CMake GUI. Once you have reconfigured and generated new ++ makefiles or project files, CMake knows about your library. ++ ++3. If your library has compiled sources (i.e., it is not a header-only ++ library), follow the instructions on :ref:`add_compiled_library` to ++ get CMake building and installing your library. ++ ++4. If your library has regression tests (it *does* regression tests, ++ right?), follow the instructions on :ref:`adding_regression_tests` ++ to get CMake to build and run regression tests for your library. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,239 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _add_compiled_library: ++ ++Adding a Compiled Library to CMake ++================================== ++ ++This page describes how to add a new, compiled library to the ++CMake-based build system. If your library is a "header-only" library, ++and does not require separate compilation of object files into a ++library binary, you can safely skip this step. Before adding compiled ++libraries to CMake, make sure you have already followed the directions ++for :ref:`boost_library_project_macro`, so that the CMake system recognizes your ++Boost library. ++ ++We will assume that your library resides in the subdirectory ++``libs/libname``, and that we want to create the compiled library ++``boost_libname``. We will also assume that the sources for this ++library reside in the subdirectory ``libs/libname/src``. The source ++directory should be listed via ``SRCDIRS`` in the use of the ++:ref:`boost_library_project_macro` macro, as described in the previous ++section. Follow these steps to add this new ++library into Boost's build system. If your library has multiple source ++directories listed after ``SRCDIRS``, follow these steps for each one. ++ ++1. Create a new file ``libs/libname/src/CMakeLists.txt`` with your ++ favorite text editor. This file will contain build rules for your ++ compiled library. In this file, we will create one or more ++ invocations of the :ref:`boost_add_library_macro` macro, which adds a ++ compiled Boost library to the CMake system. This macro provides the ++ name of the library, the source files from which the library will ++ be built, and any specific compiler and linker options needed to ++ help build the library. Let's start by adding a simple library with ++ a few source files:: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ ) ++ ++ This invocation will build several variants of the ++ ``boost_libname`` library from the source files ``mysrc1.cpp`` and ++ ``mysrc2.cpp``. For example, it will build both static and shared ++ library, single- and multi-threaded, debug and release, etc. This ++ invocation also handles the installation of these libraries. ++ ++2. For simple libraries, that's it! Rebuilding via CMake (e.g., ++ running ``make`` or reloading and rebuilding the Boost project in ++ your IDE) will build the new library, including several different ++ variants for different compilation options. Your Boost library will ++ also be included when the user installs Boost or builds a binary ++ package of Boost. Within the CMake configuration, you will also see ++ an option ``BUILD_LIBNAME``, which allows the user to decide ++ whether or not to build this Boost library. ++ ++3. Many libraries will need specific compilation options when ++ building, need to link against other libraries (Boost or ++ otherwise), or rely on certain features of the compilation process ++ to proceed. Follow the instructions in the remaining part of this ++ page to address these library-specific needs. ++ ++ ++Compilation Flags ++----------------- ++ ++Many libraries require certain compilation flags when we are building ++the library binaries themselves (rather than when the library headers ++are included by the user). For example, we want to define the macro ++``BUILDING_BOOST_LIBNAME`` when building the library. We can do so by ++passing the ``COMPILE_FLAGS`` option to ``boost_add_library``:: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ ) ++ ++Now when CMake builds the library, it will pass the flag ++``-DBUILDING_BOOST_LIBNAME=1`` to the compiler. ++ ++On Windows, shared libraries are built very differently from static ++libraries. In particular, when building a shared library, one needs to ++be sure to export the right symbols from the DLL using ++``dllexport``. When users use the shared library, these symbols will be ++imported (via ``dllimport``). The typical way to handle this is to ++define a macro (say, ``BOOST_LIBNAME_DYN_LINK``) when building the ++shared library. This macro instructs the library headers to ++``dllexport`` everything that needs to be exported. We can do this with ++variant-specific compile flags, e.g., :: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ ) ++ ++When building a shared library, the ``SHARED_COMPILE_FLAGS`` options ++will be combined with the ``COMPILE_FLAGS`` options. When building a ++static library, the ``SHARED_COMPILE_FLAGS`` options will be ++ignored. There are other options that can be specified per-feature, ++such as ``LINK_FLAGS`` and ``LINK_LIBS``; refer to the ++:ref:`boost_add_library_macro` reference for more ++information. ++ ++Linking to Other Boost Libraries ++-------------------------------- ++ ++Some Boost libraries depends on other Boost libraries. For example, ++perhaps our library uses the Boost.Filesystem library under the ++hood. We can use the ``DEPENDS`` feature of the ++:ref:`boost_add_library_macro` to state which libraries our library ++depends on. In this example, we'll link against ``boost_filesystem``:: ++ ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ DEPENDS boost_filesystem ++ ) ++ ++Now, each variant of the ``boost_libname`` library will link against ++the appropriate ``boost_filesystem`` library variant. Whenever ++``boost_filesystem`` changes, our library will be relinked ++appropriately. ++ ++Linking External Libraries/Optional Sources ++------------------------------------------- ++ ++Sometimes, Boost libraries need to link against other libraries ++supplied by the system. The primary challenge in linking against these ++libraries is *finding* those libraries, and their associated headers, ++on the system. If the library is found, we usually want to pass some ++extra compilation flags to our library and add in additional ++sources. Otherwise, we just skip these extra sources. ++ ++CMake already contains modules that search for many common system ++libraries and tools; search the ++[http://www.cmake.org/HTML/Documentation.html CMake Documentation] for ++existing modules that do what you need. For example, say we want to ++link against the system's ``PNG`` (portable network graphics) library. ++We can use the supplied ``FindPNG`` module by adding the following ++early in our ``CMakeLists.txt`` file: :: ++ ++ include(FindPNG) ++ ++Documentation for CMake modules is typically found in the module file ++itself. Look into the ``Modules`` subdirectory of your CMake ++installation, either in ``Program Files\CMake`` (on Windows) or ++``/usr/share/cmake-version`` (on Unix variants) to find the module of ++the same name. The module will typically set a variable that indicates ++whether the library was found. For the ``FindPNG`` module, this variable ++is called ``PNG_FOUND``. We can use this variable to optionally add ++sources to a variable ``EXTRA_SOURCES``:: ++ ++ include(FindPNG) ++ set(EXTRA_SOURCES) ++ if (PNG_FOUND) ++ list(APPEND EXTRA_SOURCES png.cpp) ++ endif (PNG_FOUND) ++ ++ ++CMake modules also typically define macros specifying the include ++directories needed for the library, any compile-time definitions ++required to use the library, and linking information for the library ++binary. For the ``FindPNG`` module, these variables are called ++``PNG_INCLUDE_DIR``, ``PNG_DEFINITIONS`` and ``PNG_LIBRARY``, respectively. ++ ++The include directory should be added via the CMake ++``include_directories`` macro, e.g., :: ++ ++ include_directories(${PNG_INCLUDE_DIR}) ++ ++The ``PNG_DEFINITIONS`` value should be added to the ``COMPILE_FLAGS`` ++and the ``PNG_LIBRARIES`` value to the ``LINK_LIBS`` option to the ++:ref:`boost_add_library_macro`. Using these features together, we can ++search for the ``PNG`` library on the system and optionally include ++PNG support into our library:: ++ ++ include(FindPNG) ++ set(EXTRA_SOURCES) ++ if (PNG_FOUND) ++ include_directories(${PNG_PNG_INCLUDE_DIR}) ++ list(APPEND EXTRA_SOURCES png.cpp) ++ endif (PNG_FOUND) ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ ${EXTRA_SOURCES} ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1 ${PNG_DEFINITIONS}" ++ LINK_LIBS "${PNG_LIBRARIES}" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ DEPENDS boost_filesystem ++ ) ++ ++If CMake does not provide a module to search for the library you need, ++don't worry! You can write your own module relatively easily, ++following the examples from the CMake ``Modules`` directory or some of ++the Boost-specific examples, such as ++http://svn.boost.org/svn/boost/branches/release/tools/build/CMake/FindICU.cmake ++For a real-life example of finding system libraries and using that ++information to add optional, extra capabilities to a Boost library, ++check out the build rules for the Boost.IOStreams library at ++http://svn.boost.org/svn/boost/branches/release/libs/iostreams/src/CMakeLists.txt ++ ++.. index:: Variants ++ ++Build Variants ++-------------- ++ ++The Boost build system defines many different :ref:`VARIANTS`, which ++describe specific properties of certain builds. For example, the ++``SHARED`` feature indicates that we are building a shared library, ++while the ``MULTI_THREADED`` feature indicates that we are building a ++multi-threaded library. A specific set of features is called a ++``````variant``````, e.g., ``RELEASE`` and ``MULTI_THREADED`` and ++``SHARED``. By default, the CMake-based build system builds several ++different variants of each Boost library. ++ ++Since some features conflict with certain libraries (a threading ++library cannot be ``SINGLE_THREADED``!), one can pass additional flags ++to :ref:`boost_add_library_macro` stating which features should the library ++cannot be built with. For example, say that our library cannot be ++built as a multi-threaded library, because it uses thread-unsafe ++routines from the underlying C library. To disable multi-threaded ++variants of the library, pass the option ``NOT_MULTI_THREADED``:: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ DEPENDS boost_filesystem ++ NOT_MULTI_THREADED ++ ) ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,115 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: regression tests; adding ++.. _adding_regression_tests: ++ ++Adding Regression Tests ++======================= ++ ++This page describes how to add regression tests for a Boost library in ++the CMake-based build system. Before adding regression tests, make ++sure you have already followed the directions for ++:ref:`boost_library_project_macro` , so that the CMake system ++recognizes your Boost library project, and (if necessary) ++:ref:`add_compiled_library`. We also assume that you have already ++configured your build tree for regression testing of your library, by ++adding your library project's name to the :ref:`BUILD_TESTS` option ++described in the section :ref:`testing`. ++ ++In this page, we will assume that your library resides in the ++subdirectory ``libs/libname``, and that tests for this library are ++stored in ``libs/libname/test``. The test directory should be listed ++via :ref:`TESTDIRS` in the call of ++:ref:`boost_library_project_macro`. Follow these steps to add this new ++library into Boost's build system. If your library has multiple ++testing directories listed after :ref:`TESTDIRS`, follow these steps for ++each one. ++ ++#. Create a new file ``libs/libname/test/CMakeLists.txt`` file with ++ your favorite text editor. This file will contain instructions for ++ building and running each of the regression tests for your library. ++ ++#. If your regression test depends on any other part of boost then ++ you will need to inform the build system of such with the ++ following line:: ++ ++ boost_additional_test_dependencies(libname BOOST_DEPENDS test fusion) ++ ++ where 'libname' is the name of your library that you are testing. ++ ++#. For each test that only needs to be compiled (but not executed), ++ add a ``compile`` or ``compile_fail`` test using the ++ :ref:`boost_test_compile` or :ref:`boost_test_compile_fail` ++ macros, respectively. The most basic usage of these macros ++ provides only the test name, e.g., :: ++ ++ boost_test_compile(compile_test) ++ boost_test_compile_fail(compile_fail_test) ++ ++ This code will create two regression tests. The first, ++ ``compile_test``, will try to compile the source file ++ ``compile_test.cpp`` in the current source directory. If the ++ compile is successful, the regression test passes. If the compile ++ fails, the regression test fails. The second regression test works ++ the opposite way: it will try to compile ++ ``compile_fail_test.cpp``: if the compilation is successful, the ++ regression test fails. When you run the regression tests (e.g., by ++ calling ``ctest`` from the build directory), the regression tests ++ will execute and produce output like the following:: ++ ++ Running tests... ++ Start processing tests ++ Test project /Users/dgregor/Projects/boost-darwin ++ 1/ 2 Testing libname::compile_test Passed ++ 2/ 2 Testing libname::compile_fail_test ***Failed - supposed to fail ++ ++ 100% tests passed, 0 tests failed out of 2 ++ ++3. For any tests that need to be built and executed, use the ++ :ref:`boost_test_run` or :ref:`boost_test_run_fail` macros. Both ++ tests will build, link and execute a regression test. The ++ :ref:`boost_test_run` macro expects that executable to return an ++ exit code of zero, while the :ref:`boost_test_run_fail` macro ++ expects that executable to return a non-zero exit code. For ++ example, we might build a simple test ``simple_test`` from the ++ source file ``simple_test.cpp``:: ++ ++ boost_test_run(simple_test) ++ ++ Often, we'll want to link against our own Boost library, which we ++ do using the ``DEPENDS`` argument to ``boost_test_run``:: ++ ++ boost_test_run(big_test big_test1.cpp big_test2.cpp ++ DEPENDS boost_libname-static ++ ) ++ ++ Here, we have created a test ``big_test``, built from the source ++ files ``big_test1.cpp`` and ``big_test2.cpp``, which will link ++ against the static library for ``boost_libname``. We could create ++ a similar test that links against the shared library for ++ ``boost_libname``, passing along compilation flags specific to the ++ shared library:: ++ ++ boost_test_run(big_test_dll big_test1.cpp big_test2.cpp ++ DEPENDS boost_libname-shared ++ COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ ) ++ ++ Some tests require command-line arguments. For example, say we ++ want to pass ``-loop 1000`` to a randomized test. We can do so ++ using the ``ARGS`` argument to ``boost_test_run`` (or ++ ``boost_test_run_fail``):: ++ ++ boost_test_run(random_test ARGS "-loop" "1000" DEPENDS boost_libname-static) ++ ++ Once you have finished describing your regression tests to the ++ CMake system, you're done! Your library will now build, test, and ++ install with CMake and this behavior should be portable across ++ many different platforms. ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/build_configuration.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/build_configuration.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/build_configuration.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/build_configuration.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,297 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _configure_and_build: ++ ++Configuring the buildspace ++========================== ++ ++Configuration tools ++------------------- ++ ++Included in the standard cmake distribution are the Windows `CMake` ++gui and the unix `ccmake` curses interface, which allow one to ++configure various aspects of the cmake build. On Microsoft Windows ++run the CMake configuration program from the Start menu. ++ ++Having done the initial configuration step as in :ref:`quickstart`, ++on unix run:: ++ ++ make edit_cache ++ ++in the binary directory. On windows just run the cmake gui and choose ++the binary dir from the pulldown menu. You will be presented with a list of editable build options something ++like this:: ++ ++ BOOST_PLATFORM linux ++ BUILD_BCP ON ++ BUILD_BOOST_WSERIALIZATION ON ++ BUILD_EXAMPLES NONE ++ BUILD_INSPECT ON ++ BUILD_TESTS NONE ++ CMAKE_BUILD_TYPE Release ++ CMAKE_INSTALL_PREFIX /usr/local ++ DART_TESTING_TIMEOUT 15 ++ DEBUG_COMPILE_FLAGS -g ++ DOCBOOK_AUTOCONFIG OFF ++ DOCBOOK_DTD_DIR DOCBOOK_DTD_DIR-NOTFOUND ++ DOCBOOK_XSL_DIR DOCBOOK_XSL_DIR-NOTFOUND ++ ENABLE_DEBUG ON ++ ENABLE_MULTI_THREADED ON ++ ENABLE_RELEASE ON ++ ENABLE_SHARED ON ++ ENABLE_SINGLE_THREADED OFF ++ ENABLE_STATIC ON ++ RELEASE_COMPILE_FLAGS -O3 -DNDEBUG ++ UNZIP /usr/bin/unzip ++ WINMANGLE_LIBNAMES OFF ++ XSLTPROC /usr/bin/xsltproc ++ XSLTPROC_FLAGS --xinclude ++ ++On windows, the configurables will be right in the middle of the gui; ++can't miss 'em. Note the ``[t]`` key to toggle 'advanced mode' which ++will show more options (on windows this is a selection box that says ++``Simple View`` by default, pull it down to see Advanced and Grouped ++views). ++ ++Use the arrow keys to select particular options. Press :kbd:`c` (for ++(c)onfigure) to perform the preliminary configuration of the CMake ++build system when you are done. When the options you have selected ++have stabilized, CMake will give you the (g)enerate option. If you do ++not see this option, press :kbd:`c` again to reconfigure. Try the ++:kbd:`t` key to see more options. When you're done press :kbd:`g` to ++generate makefiles and exit. ++ ++See :ref:`VARIANTS` for information about the feature-specific options ++(ie ``ENABLE_whatever`` listed above.) ++ ++.. _cmakecache.txt: ++ ++CMakeCache.txt ++============== ++ ++The same information is stored in a file `CMakeCache.txt` located in ++the build directory. For this reason, after you've done the initial ++configuration of a build directory you can invoke `ccmake` like this:: ++ ++ ccmake ++ ++or have the makefiles do it for you:: ++ ++ make edit_cache ++ ++The CMakeCache.txt file is hand-editable, though this is usually not ++as convenient as the cmake-supplied configuration tools mentioned ++above. An excerpt of this file:: ++ ++ // ++ // Enable/Disable color output during build. ++ // ++ CMAKE_COLOR_MAKEFILE:BOOL=ON ++ ++ // ++ // Mangle lib names for windows, e.g., boost_filesystem-gcc41-1_34 ++ // ++ WINMANGLE_LIBNAMES:BOOL=ON ++ ++ ++On unix, (?windows too?) the generated makefiles will detect if this ++file has been edited and will automatically rerun the makefile ++generation phase. If you should need to trigger this regeneration ++manually you may execute :: ++ ++ make rebuild_cache ++ ++.. rubric:: Deleting the cache ++ ++You may find yourself wanting to start from scratch, for instance if ++you want to switch from using Visual Studio to using NMake. To do ++this, **delete the cache file**. On windows, there is a *Delete ++Cache* option in the CMake gui's *File* menu. On unix you can simply ++``rm CMakeCache.txt``. ++ ++.. index:: CMAKE_BINARY_DIR ++.. _CMAKE_BINARY_DIR: ++ ++CMAKE_BINARY_DIR ++---------------- ++ ++This variable is set by cmake and corresponds to the toplevel of your ++``build/`` directory. ++ ++ ++.. _useful_options: ++ ++A few useful options ++-------------------- ++ ++CMAKE_OSX_ARCHITECTURES ++^^^^^^^^^^^^^^^^^^^^^^^ ++ ++ *Mac OS X users*: to build universal binaries, set this to ++ ``ppc;i386``. ++ ++.. index:: WINMANGLE_LIBNAMES ++.. _winmangle_libnames: ++ ++WINMANGLE_LIBNAMES ++^^^^^^^^^^^^^^^^^^ ++ ++This option controls whether libraries will be built with mangled-in ++compiler name/version and boost version. For example, with ++``BUILD_VERSIONED`` set to ``OFF``, the signals library looks like ++this:: ++ ++ % ls lib/*signals* ++ lib/libboost_signals-mt-d.a lib/libboost_signals-mt.a ++ lib/libboost_signals-mt-d.so* lib/libboost_signals-mt.so* ++ ++But with it on, (on a gcc 4.3 linux box):: ++ ++ % ls lib/*signal* ++ lib/libboost_signals-gcc43-mt-1_40.a ++ lib/libboost_signals-gcc43-mt-d-1_40.a ++ lib/libboost_signals-gcc43-mt-1_40.so* ++ lib/libboost_signals-gcc43-mt-d-1_40.so* ++ ++Historically this mangling has been convenient for windows users and a ++bane to unix users, thus *winmangle_libnames*. ++ ++.. note:: The on-disk names of library :ref:`variants ` are ++ always mangled with the active :ref:`features `. ++ ``WINMANGLED_LIBNAMES`` affects mangling of compiler and boost ++ version only. ++ ++.. index:: BUILD_PROJECTS ++.. _BUILD_PROJECTS: ++ ++BUILD_PROJECTS ++^^^^^^^^^^^^^^ ++ ++This is a semicolon-separated list of projects to be built, or ++``"ALL"`` (the default) for all projects, or ``"NONE"``. Projects not ++appearing in this list (if list not ``"ALL"``) are ignored; no targets in ++this project will appear. Example:: ++ ++ BUILD_PROJECTS=thread;python ++ ++See also the :ref:`boost_library_project_macro` macro. ++ ++.. note:: ++ ++ If you specify a project with link time dependencies on other ++ projects, e.g. ``filesystem``, (which depends on ``system``) and ++ omit the dependencies, you will get an error from cmake something ++ like this:: ++ ++ CMake Error at tools/build/CMake/BoostCore.cmake:736 (get_property): ++ get_property could not find TARGET boost_system-mt-shared. Perhaps it has ++ not yet been created. ++ Call Stack (most recent call first): ++ tools/build/CMake/BoostCore.cmake:1170 (boost_library_variant) ++ libs/filesystem/src/CMakeLists.txt:7 (boost_add_library) ++ ++ ++.. index:: BUILD_EXAMPLES ++.. _BUILD_EXAMPLES: ++ ++BUILD_EXAMPLES ++^^^^^^^^^^^^^^ ++ ++This is a semicolon-separated list of projects whose examples should ++be built, e.g.:: ++ ++ BUILD_EXAMPLES="iostreams;accumulators" ++ ++.. warning:: If you pass this on the commandline in a unix shell, ++ don't forget to quote the list of arguments or escape the ++ semicolons... ++ ++Per-library examples are specified with the :ref:`EXAMPLEDIRS` ++argument to the :ref:`boost_library_project_macro` macro. ++ ++.. rubric:: Note: ++ ++A project's examples will only be built if the project appears in ++**both** :ref:`BUILD_PROJECTS` and :ref:`BUILD_EXAMPLES`. I.e., the ++``BUILD_PROJECTS`` filter is applied first, and the ``BUILD_EXAMPLES`` ++filter has no ability to reverse the result. ++ ++.. index:: BUILD_TOOLS ++.. _BUILD_TOOLS: ++ ++BUILD_TOOLS ++^^^^^^^^^^^ ++ ++Similar to BUILD_EXAMPLES and BUILD_PROJECTS above, this is a ++semicolon-separated list of tools (in subdirectory ++``$BOOST_ROOT/tools/``) that should be built, e.g.:: ++ ++ BUILD_TOOLS=quickbook;wave ++ ++``"ALL"`` will build all tools, ``"NONE"`` will build none. Note that ++the values here are lowercase (only subdirectories of ``tools/`` ++matching one of the strings in the list will be traversed by cmake). ++ ++.. index:: verbosity; CMAKE_VERBOSE_MAKEFILE ++ ++CMAKE_VERBOSE_MAKEFILE ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ Displays full build commands during build. Good for debugging. ++ This option will generate permanently verbose makefiles; it is ++ generally easier to invoke make with the option ``VERBOSE=1`` ++ instead (this has the same effect, but is not persistent). ++ ++.. index:: CMAKE_CXX_COMPILER ++ ++.. _cmake_cxx_compiler: ++ ++CMAKE_CXX_COMPILER ++^^^^^^^^^^^^^^^^^^ ++ ++ Sets the compiler. If you have a nonstandard compiler and no ++ default compiler, you may have to pass the value of this option on ++ the commandline, for example:: ++ ++ cmake ../src -DCMAKE_CXX_COMPILER=gcc-4.4 ++ ++ On windows you can set this in the gui, but you will probably prefer ++ to have cmake generate a set of nmake or project files by choosing ++ an appropriate generator. ++ ++.. index:: BUILD_SOVERSIONED ++.. index:: soversion ++.. index:: soname ++.. _BUILD_SOVERSIONED: ++ ++BUILD_SOVERSIONED ++^^^^^^^^^^^^^^^^^ ++ ++Enables the setting of SOVERSION in built libraries. If ++this is on:: ++ ++ % ls -l libboost_thread*.so* ++ lrwxrwxrwx 1 troy troy 30 Oct 29 18:37 libboost_thread-mt-d.so -> libboost_thread-mt-d.so.1.41.0* ++ -rwxr-xr-x 1 troy troy 571361 Oct 29 18:37 libboost_thread-mt-d.so.1.41.0* ++ lrwxrwxrwx 1 troy troy 28 Oct 29 18:37 libboost_thread-mt.so -> libboost_thread-mt.so.1.41.0* ++ -rwxr-xr-x 1 troy troy 114963 Oct 29 18:37 libboost_thread-mt.so.1.41.0* ++ ++ % readelf -a libboost_thread-mt.so | grep SONAME ++ 0x000000000000000e (SONAME) Library soname: [libboost_thread-mt.so.1.41.0] ++ ++and if off:: ++ ++ % ls -l lib/*signals* ++ -rwxr-xr-x 1 troy troy 835522 Oct 29 15:10 lib/libboost_signals-mt-d.so* ++ -rwxr-xr-x 1 troy troy 121886 Oct 29 15:10 lib/libboost_signals-mt.so* ++ ++(Unix only, ``ON`` by default) ++ ++This setting also determines whether libraries are *installed* ++with/without soversions. See also :ref:`INSTALL_VERSIONED`. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/build_installer.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/build_installer.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/build_installer.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/build_installer.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,57 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++Building a Binary Installer ++=========================== ++ ++CMake can easily build binary installers for a variety of ++platforms. On Windows and Mac OS X, CMake builds graphical ++installation programs. For other Unix operating systems, CMake ++currently builds tarballs and self-installing shell scripts. This ++CMake functionality, provided by the ++`CPack `_ program ++that is part of CMake, is used to create all of CMake's binary ++installers. We use CPack to build binary installers for Boost. To ++build a binary installer for Boost, follow these steps: ++ ++1. Build Boost using CMake. (see :ref:`quickstart`) ++ ++2. ('''Windows only''') Download and install the `Nullsoft Scriptable ++ Install System (NSIS) `_, ++ which is used to create graphical installers on Windows. Unix users ++ do not need to install any extra tools. ++ ++3. Using the same development tools for building Boost, build the ++ "package" target to create the binary installers. ++ ++ * With Microsoft Visual Studio, build the target named ``PACKAGE`` ++ * With makefiles, run ` make package``. ++ ++The output of the packaging process will be one or more binary ++packages of the form Boost-*version*\ -*platform*\ \.*extension*\ . The ++type of package will differ from one platform to another: ++ ++* On Windows: The primary output is an executable (``.exe``) that ++ provides a graphical installer. ++ ++* On Mac OS X: The primary output is a disk image (``.dmg``) that ++ contains a graphical installer package. ++ ++* On Unix: Packaging produces compressed tarballs (``.tar.gz``) and ++ a self-installing shell script (``.sh``) ++ ++ ++Windows installer: ++ ++.. image:: WindowsInstaller.png ++ ++ ++Mac installer: ++ ++.. image:: MacInstaller.png ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/build_variants.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/build_variants.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/build_variants.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/build_variants.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,283 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: variants ++.. index:: features ++ ++.. _VARIANTS: ++.. _features: ++ ++Build Variants and Features ++=========================== ++ ++Different compilation and linking flags affect how source code and ++libraries are compiled. Boost's build system abstracts some of these ++properties into specific *features* of the build, which indicate (at ++a high level) what options are being used, e.g., multi-threaded, ++release-mode, shared libraries, etc. Each feature brings with it ++certain compilation options (which vary from one compiler to the next) ++that need to be used when building that variant. For example, on Unix ++systems, one often must link against the `pthread` library for ++multi-threaded programs and libraries, which requires the addition of ++the `-lpthread` flag to the link line. The ''features'' feature of the ++build system encapsulates this knowledge. ++ ++A library built with a given set of **features** is called a library ++**variant**. For example, we could have a multi-threaded release variant ++of a shared library, which would be built with all of the options ++needed to support multi-threading, optimization, elimination of ++debugging symbols, and for building a shared library. Each variant of ++a library is given a unique name based on the features in that ++variant, so that one can readily identify the library, for example, ++`libboost_signals-gcc40-mt-d.so` is the multi-threaded, debug version ++of the shared library for Boost.Signals on a typical Linux system. The ++`Boost Getting Started guide ++`_ ++describes the library naming conventions used for the variants. ++ ++The configuration and build of the library for each *feature* is ++(dis|en)abled with a boolean option ``ENABLE_``\ *feature*, which set ++in :ref:`cmakecache.txt`. The available features are: ++ ++.. _name_mangling: ++ ++Name Mangling ++------------- ++ ++Libraries have their features mangled in to distinguish the variants ++from one another. CMake's symbolic target names correspond: ++ ++============== =========== ====================== ++Feature Target Name Library Name Component ++============== =========== ====================== ++shared -shared (none) ++static -static (none) ++multithreaded -mt -mt ++release (none) (none) ++debug -debug -d ++pydebug -pydebug -yd ++============== =========== ====================== ++ ++The make target ``help`` will show the available options:: ++ ++ ``make help`` shows a list:: ++ ++ % make help | grep signals ++ ... boost_signals ++ ... boost_signals-mt-shared ++ ... boost_signals-mt-shared-debug ++ ... boost_signals-mt-static ++ ... boost_signals-mt-static-debug ++ ... boost_signals-shared ++ ... boost_signals-shared-debug ++ ... boost_signals-static ++ ... boost_signals-static-debug ++ ++And you can see the correspondence to the libraries on disk:: ++ ++ % ls lib/libboost_signals* ++ lib/libboost_signals-d.a lib/libboost_signals-mt.a ++ lib/libboost_signals-d.so lib/libboost_signals-mt.so ++ lib/libboost_signals-mt-d.a lib/libboost_signals.a ++ lib/libboost_signals-mt-d.so lib/libboost_signals.so ++ ++(Note: on most unix you will see more than this, as some of them ++contain version numbers and are symbolic links to one another). ++ ++Configuring features ++-------------------- ++ ++You can globally (en|dis)able the build of these various features ++through the following cmake variables: ++ ++.. index:: ++ single: ENABLE_STATIC ++ pair: STATIC; feature ++ ++.. _enable_static: ++ ++ENABLE_STATIC ++^^^^^^^^^^^^^ ++ ++ The `STATIC` feature identifies static builds of libraries, i.e., a ++ `.lib` (library) file on Microsoft Windows or a `.a` (archive) file ++ on Unix systems. ++ ++.. index:: ++ single: ENABLE_SHARED ++ pair: SHARED; feature ++ ++ENABLE_SHARED ++^^^^^^^^^^^^^ ++ ++ The `SHARED` feature identifies shared builds of libraries, i.e., ++ a `.dll` (dynamically linked library) file on Microsoft Windows or ++ a `.so`(shared object) or `.dylib` (dynamic library) file on Unix ++ systems. In some cases, `SHARED` variants actually refer to ++ "modules", which are a special kind of shared library on some ++ systems (e.g., Mac OS X). ++ ++.. index:: ++ single: ENABLE_DEBUG ++ pair: DEBUG; feature ++ ++ENABLE_DEBUG ++^^^^^^^^^^^^ ++ ++ The `DEBUG` feature identifies builds of libraries that retain ++ complete debugging information and prohibit optimization, making ++ these builds far easier to use for debugging programs. ++ ++.. index:: ++ single: ENABLE_RELEASE ++ pair: RELEASE; feature ++ ++ENABLE_RELEASE ++^^^^^^^^^^^^^^ ++ ++ The `RELEASE` feature identifies builds of libraries that use full ++ optimization and eliminate extraneous information such as debug ++ symbols, resulting in builds of libraries that are typically much ++ smaller than (and execute faster than) their debug library ++ counterparts. ++ ++ ++.. index:: ++ single: ENABLE_SINGLE_THREADED ++ pair: SINGLE_THREADED; feature ++ ++ENABLE_SINGLE_THREADED ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `SINGLE_THREADED` feature identifies builds of libraries that ++ assume that the program using them is single-threaded. These ++ libraries typically avoid costly atomic operations or locks, and ++ make use of no multi-threaded features. ++ ++ ++.. index:: ++ single: ENABLE_MULTI_THREADED ++ pair: MULTI_THREADED; feature ++ ++ENABLE_MULTI_THREADED ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `MULTI_THREADED` feature identifies builds of libraries that ++ assume that the program using them is multi-threaded. These ++ libraries may introduce additional code (relative to their ++ single-threaded variants) that improves the behavior of the ++ library in a multi-threade context, often at the cost of ++ single-thread performance. ++ ++ ++.. index:: ++ single: ENABLE_STATIC_RUNTIME ++ pair: STATIC_RUNTIME; feature ++ ++ENABLE_STATIC_RUNTIME ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `STATIC_RUNTIME` feature identifies builds that link against ++ the C and C++ run-time libraries statically, which directly ++ includes the code from those run-time libraries into the Boost ++ library or executable. ++ ++ ++.. index:: ++ single: ENABLE_DYNAMIC_RUNTIME ++ pair: DYNAMIC_RUNTIME; feature ++ ++ENABLE_DYNAMIC_RUNTIME ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `DYNAMIC_RUNTIME` feature identifies builds that link against ++ the dynamic C and C++ run-time libraries. ++ ++.. _per_feature_flags: ++ ++Per-feature Compilation and Linker Options ++------------------------------------------ ++ ++For each feature above, the Boost build system defines three variables ++used to provide compilation flags, linking flags, and extra libraries ++to link against when using that feature. These flags are automatically ++added to the build commands for variants using that feature. The ++particular flags and libraries are described by the following global ++variables: ++ ++feature_COMPILE_FLAGS ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ A string containing extra flags that will be added to the compile ++ line, including macro definitions and compiler-specific flags ++ needed to enable this particular feature. ++ ++feature_LINK_FLAGS ++^^^^^^^^^^^^^^^^^^ ++ ++ A string containing extra flags that will be added to the ++ beginning of the link line. Note that these flags should '''not''' ++ contain extra libraries that one needs to link against. Those ++ should go into `feature_LINK_LIBS`. ++ ++feature_LINK_LIBS ++^^^^^^^^^^^^^^^^^ ++ ++ A CMake list containing the names of additional libraries that ++ will be linked into libraries and executables that require this ++ feature. The elements in this list should name the library (e.g., ++ `pthread`) rather than providing the link command itself (e.g., ++ `-lpthread`), so that linking will be more portable. ++ ++Each of these variables can be expanded for any feature, e.g., ++`MULTI_THREADED_LINK_LIBS` contains libraries that multi-threaded ++variants should link against. ++ ++All of the flags provided for each feature are typically detected by ++the Boost CMake configuration module in ++``tools/build/CMake/BoostConfig.cmake``. ++ ++.. note:: These are **global** per-feature flags, ie ++ RELEASE_COMPILE_FLAGS defines flags used for the compilation ++ of all ``.cpp`` files that go into release libraries. See ++ :ref:`boost_add_library_macro` for per-feature flags that apply only to ++ individual libraries. ++ ++Default Variants ++---------------- ++ ++By default, Boost's build system will build every permutation of ++libraries in the feature space ++ ++ (`STATIC` or `SHARED`) x (`DEBUG` or `RELEASE`) x ++ (`SINGLE_THREADED` or `MULTI_THREADED`) ++ ++resulting in 8 different copies of each library, modulo certain cases ++where variants are disabled [#disabled_variants]_. On Windows, where ++the distinction between static and dynamic run-time libraries is very ++important, the default build also creates permutations with ++(`STATIC_RUNTIME` or `DYNAMIC_RUNTIME`). Certain non-sensical ++combinations of libraries will automatically be eliminated, e.g., it ++does not generally make sense to create a shared library that links ++against the static C and C++ run-time libraries. However, this still ++means that the default build creates between 8 and 12 different ++variants of each Boost library. ++ ++Users who only need a few variants of each library can change which ++variants of Boost libraries are build by default using various ++configuration options. For each feature, CMake's configuration will ++contain an option `ENABLE_feature`. When the feature is ON, the build ++system will produce variants with that feature. When the feature is ++OFF, the build system will suppress variants with that feature. For ++example, toggling `ENABLE_DEBUG` to `OFF` will inhibit the creation of ++the debug variants, drastically improving overall build times. ++ ++.. rubric:: Footnotes ++ ++.. [#disabled_variants] For instance, the **SINGLE_THREADED** variant ++ of the *boost_thread* project is disabled. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/diff.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/diff.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/diff.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/diff.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,17 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++Differences between this release and upstream ++============================================= ++ ++The only differences below should be in the build system... but there ++should be a *lot* of them. :) ++ ++ ++.. literalinclude:: git_diff.txt ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/exported_targets.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/exported_targets.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/exported_targets.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/exported_targets.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,257 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _find_package: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_package ++.. _FindBoost.cmake: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:FindBoost ++ ++.. _CMAKE_PREFIX_PATH: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#variable:CMAKE_PREFIX_PATH ++ ++.. _CMAKE_INSTALL_PREFIX: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#variable:CMAKE_INSTALL_PREFIX ++ ++.. index:: targets, exported ++.. index:: uninstalled tree, building against ++.. _exported_targets: ++ ++ ++Tricks for Building against Boost with CMake ++============================================ ++ ++Boost.CMake *exports* its targets, making developing independent ++projects against an installed boost, or simply against a build tree ++sitting on disk. There are a variety of ways to use these to ease ++configuration of boost in your external project. ++ ++.. index:: Building against uninstalled boost ++.. _uninstalled: ++ ++With an uninstalled build ++^^^^^^^^^^^^^^^^^^^^^^^^^ ++ ++You only need to do three things: ++ ++1. Add the appropriate include directory with ++ ``include_directories()``. This is the toplevel of the boost ++ source tree. ++ ++2. ``include`` the generated ``Exports.cmake`` from the build tree ++ containing the exported targets. I is located in ++ ``${``:ref:`CMAKE_BINARY_DIR`\ ``}/lib/Exports.cmake`` ++ ++3. Tell cmake about your link dependencies with ++ ``target_link_libraries``. Note that you use the **names of the ++ cmake targets**, not the shorter names that the libraries have on ++ disk. ``make help`` shows a list:: ++ ++ % make help | grep signals ++ ... boost_signals ++ ... boost_signals-mt-shared ++ ... boost_signals-mt-shared-debug ++ ... boost_signals-mt-static ++ ... boost_signals-mt-static-debug ++ ++ See also :ref:`name_mangling` for details on the naming ++ conventions. ++ ++Since these are exported targets, CMake will add appropriate *rpaths* ++as necessary; fiddling with ``LD_LIBRARY_PATH`` should not be ++necessary. ++ ++**If you get the target name wrong**, cmake will assume that you are ++talking about a library in the linker's default search path, not an ++imported target name and you will get an error when cmake tries to ++link against the nonexistent target. For instance, if I specify:: ++ ++ target_link_libraries(main boost_thread-mt-d) ++ ++on linux my error will be something like:: ++ ++ [100%] Building CXX object CMakeFiles/main.dir/main.cpp.o ++ Linking CXX executable main ++ /usr/bin/ld: cannot find -lboost_thread-mt-d ++ collect2: ld returned 1 exit status ++ ++The problem here is that the real name of the multithreaded, shared, ++debug library **target** is ``boost_thread-mt-shared-debug``. I know this is ++confusing; much of this is an attempt to be compatible with ++boost.build. ++ ++If you are having trouble, have a look inside that file ++``Exports.cmake``. For each available target, you'll see:: ++ ++ # Create imported target boost_thread-mt-shared-debug ++ ADD_LIBRARY(boost_thread-mt-shared-debug SHARED IMPORTED) ++ ++ # Import target "boost_thread-mt-shared-debug" for configuration "Release" ++ SET_PROPERTY(TARGET boost_thread-mt-shared-debug APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) ++ SET_TARGET_PROPERTIES(boost_thread-mt-shared-debug PROPERTIES ++ IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "pthread;rt" ++ IMPORTED_LOCATION_RELEASE "/home/troy/Projects/boost/cmake/cmaketest/build/boost/lib/libboost_thread-mt-d.so.1.41.0" ++ IMPORTED_SONAME_RELEASE "libboost_thread-mt-d.so.1.41.0" ++ ) ++ ++it is the name in the ``ADD_LIBRARY`` line that you pass to ++``target_link_libraries()``. ++ ++ ++ ++Example ++------- ++ ++There is an unpacked boost in ``/home/troy/boost-1.41.0/src`` and ++built boost in directory ``/home/troy/boost/1.41.0/build``. I have a ++program that builds from one file, ``main.cpp`` and uses boost ++threads. My ``CMakeLists.txt`` looks like this:: ++ ++ include_directories( ++ /home/troy/boost-1.41.0/src ++ /home/troy/boost-1.41.0/build/lib/Exports.cmake ++ ) ++ ++ add_executable(my_program main.cpp) ++ ++ target_link_libraries(my_program boost_thread-mt-shared-debug) ++ ++When I build, I see ++(wrapped, and some output replaced with ... for brevity):: ++ ++ % make VERBOSE=1 ++ ... ++ [100%] Building CXX object CMakeFiles/main.dir/main.cpp.o ++ /usr/bin/c++ -I/home/troy/boost-1.41.0/src -o CMakeFiles/main.dir/main.cpp.o -c /home/troy/myproject/main.cpp ++ ... ++ linking CXX executable main ++ /usr/bin/c++ -fPIC CMakeFiles/main.dir/main.cpp.o -o main -rdynamic /home/troy/boost-1.41.0/build/lib/libboost_thread-mt-d.so.1.41.0 -lpthread -lrt -Wl,-rpath,/home/troy/boost-1.41.0/build/lib ++ ... ++ [100%] Built target main ++ ++With an installed boost ++^^^^^^^^^^^^^^^^^^^^^^^ ++ ++The process by which cmake discovers an installed boost is a big ++topic, outside the scope of this document. Boost.CMake makes every ++effort to install things cleanly and behave in a backwards-compatible ++manner. ++ ++.. index:: CMAKE_PREFIX_PATH ++.. index:: CMAKE_INSTALL_PREFIX ++.. index:: BOOST_INSTALL_CMAKE_DRIVERS ++ ++The variable :ref:`BOOST_INSTALL_CMAKE_DRIVERS` controls whether ++Boost.CMake installs two files which help out in case multiple ++versions of boost are installed. If there is only one version ++present, the situation is simpler: typically this is simply a ++matter of either installing boost to a directory that on cmake's ++built-in CMAKE_PREFIX_PATH_, or adding the directory to ++CMAKE_PREFIX_PATH_ in your environment if it is not. You can see ++built-in search path by running ``cmake --system-information`` and ++looking for ``CMAKE_SYSTEM_PREFIX_PATH``. ++ ++Try this first ++-------------- ++ ++Make a subdirectory for your project and create a file ``main.cpp``:: ++ ++ #include ++ #include ++ #include ++ ++ void helloworld() ++ { ++ std::cout << BOOST_VERSION << std::endl; ++ } ++ ++ int main() ++ { ++ boost::thread thrd(&helloworld); ++ thrd.join(); ++ } ++ ++.. index:: NO_MODULE ++ ++Create a ``CMakeLists.txt`` in the same directory containing the ++following:: ++ ++ find_package(Boost 1.41.0 COMPONENTS thread NO_MODULE) ++ ^^^^^^^^^--- NOTE THIS ++ include(${Boost_INCLUDE_DIR}) ++ add_executable(main main.cpp) ++ target_link_libraries(main ${Boost_LIBRARIES}) ++ ++The ``NO_MODULE`` above is currently **required**, pending updates to ++FindBoost.cmake_ in a cmake release. ++ ++Then run ``cmake .`` in that directory (note the dot). Then run make. ++If all is well you will see:: ++ ++ % make VERBOSE=1 ++ ... ++ [100%] Building CXX object CMakeFiles/main.dir/main.cpp.o ++ /usr/bin/c++ -I/usr/local/boost-1.41.0/include -o CMakeFiles/main.dir/main.cpp.o -c /home/troy/Projects/boost/cmake/proj/main.cpp ++ ... ++ Linking CXX executable main ++ /usr/bin/c++ -fPIC CMakeFiles/main.dir/main.cpp.o -o main -rdynamic /usr/local/boost-1.41.0/lib/libboost_thread-mt-d.so.1.41.0 -lpthread -lrt -Wl,-rpath,/usr/local/boost-1.41.0/lib ++ ... ++ [100%] Built target main ++ ++If all is not well, set CMAKE_PREFIX_PATH_ in your environment or in ++your ``CMakeLists.txt``. Add the CMAKE_INSTALL_PREFIX_ that you used ++when you installed boost:: ++ ++ export CMAKE_PREFIX_PATH=/my/unusual/location ++ ++and try again. ++ ++Alternative: via Boost_DIR ++-------------------------- ++ ++If the above didn't work, you can help cmake find your boost ++installation by setting ``Boost_DIR`` (in your ``CMakeLists.txt`` to ++the :ref:`BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR` that was set when you ++compiled. ``Boost_DIR`` will override any other settings. ++ ++Given a (versioned) boost installation in ``/net/someplace``, ++Your CMakeLists.txt would look like this:: ++ ++ include_directories(/net/someplace/include/boost-1.41.0) ++ ++ # you can also set Boost_DIR in your environment ++ set(Boost_DIR /net/someplace/share/boost-1.41.0/cmake) ++ ++ find_package(Boost NO_MODULE) ++ ++ add_executable(main main.cpp) ++ ++ target_link_libraries(main boost_thread-mt-shared-debug) ++ ++ ++Multiple versions of boost installed ++------------------------------------ ++ ++The only recommended way to do this is the following: ++ ++* Install all versions of boost to the same CMAKE_INSTALL_PREFIX_. One ++ or more of them must have been installed with ++ :ref:`BOOST_INSTALL_CMAKE_DRIVERS` on. :ref:`INSTALL_VERSIONED` ++ should be `OFF` for one of them at most. ++ ++* Add the setting for CMAKE_INSTALL_PREFIX_ to CMAKE_PREFIX_PATH_, if ++ it is nonstandard. ++ ++* Pass ``NO_MODULE`` to find_package_ when you call it (as above). ++ ++At this point passing a version argument to find_package_ (see also ++docs for FindBoost.cmake_) should result in correct behavior. ++ ++.. rubric:: Footnotes ++ ++.. [#libsuffix] If your distribution specifies a :ref:`LIB_SUFFIX` ++ (e.g. if it installs libraries to ++ ``${``:ref:`CMAKE_INSTALL_PREFIX`\ ``/lib64``, you ++ will find `Boost.cmake` there. If the installation is ++ 'versioned', the ``Boost.cmake`` file may be in a ++ versioned subdirectory of lib, e.g. ``lib/boost-1.41.0``. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,19 @@ ++.. index:: bzip2, external dependency ++.. _bzip2: ++ ++ ++BZip2 ++===== ++ ++If ``WITH_BZIP2`` is ``ON``, BZip2 is detected via the standard cmake ++``find_package(BZip2)``. The following variables are set: ++ +++----------------------+----------------------------------------+ ++|``BZIP2_FOUND`` |Bzip2 was found | +++----------------------+----------------------------------------+ ++|``BZIP2_INCLUDE_DIR`` |Path to BZip2 includes | +++----------------------+----------------------------------------+ ++|``BZIP2_DEFINITIONS`` |Compile line flags for BZip2 | +++----------------------+----------------------------------------+ ++|``BZIP2_LIBRARIES`` |Libraries to link to when using BZip2 | +++----------------------+----------------------------------------+ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,10 @@ ++.. index:: doxygen, external dependency ++.. _doxygen: ++ ++ ++Doxygen ++======= ++ ++If ``WITH_DOXYGEN`` is ``ON``, doxygen is detected via the standard ++cmake ``find_package(Doxygen)``. See the cmake documentation for more ++information +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/expat.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/expat.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/expat.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/expat.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,10 @@ ++.. index:: expat, external dependency ++.. _expat: ++ ++ ++Expat ++===== ++ ++If ``WITH_EXPAT`` is ``ON``, expat is detected via the standard ++cmake ``find_package(Expat)``. See the cmake documentation for more ++information +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/icu.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/icu.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/icu.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/icu.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,22 @@ ++.. index:: ICU, external dependency ++.. _icu: ++ ++ ++ICU (International Components for Unicode) ++========================================== ++ ++If ``WITH_ICU`` is ``ON``, ICU is detected via the standard cmake ++``find_package(ICU)``. The following variables are set: ++ +++-----------------------+----------------------------------------+ ++|``ICU_FOUND`` |ON if icu was found | +++-----------------------+----------------------------------------+ ++|``ICU_I18N_FOUND`` |ON if the i18n part (whatever that is) | ++| |of ICU was found. | +++-----------------------+----------------------------------------+ ++|``ICU_INCLUDE_DIRS`` |path to ICU headers | +++-----------------------+----------------------------------------+ ++|``ICU_LIBRARIES`` |full paths to ICU libraries | +++-----------------------+----------------------------------------+ ++|``ICU_I18N_LIBRARIES`` |full paths to the i18n libraries | +++-----------------------+----------------------------------------+ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/index.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/index.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/index.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/index.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,44 @@ ++.. index:: External Dependencies; selectively disabling ++ ++.. _external_dependencies: ++ ++External Dependencies ++===================== ++ ++Each external dependency has an associated option ``WITH_``\ ++*dependency* that controls whether detection of the dependency will ++happen at all. These options default to ``ON``. ++ ++Each external will set a variable *external*\ ``_FOUND`` if detection ++was successful. If this variable is empty (or ``FALSE``, 0, or ++``NO``) detection will be reattempted each time you configure. ++ ++To **disable** the detection of any given external dependency and ++thereby any libraries or features that depend on it, set option ++``WITH_``\ *dependency* to ``NO`` (or ``OFF``, etc.):: ++ ++ % cmake ../src -DWITH_PYTHON=OFF ++ -- The C compiler identification is GNU ++ -- The CXX compiler identification is GNU ++ ... more output ... ++ -- ++ -- Python: ++ -- Disabled since WITH_PYTHON=OFF ++ -- ++ ... more output ... ++ -- + python ++ -- +-- disabled since PYTHON_FOUND is false ++ -- ++ ++.. toctree:: ++ :maxdepth: 3 ++ ++ bzip2 ++ doxygen ++ expat ++ icu ++ mpi ++ python ++ xsltproc ++ valgrind ++ zlib +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,10 @@ ++.. index:: MPI, external dependency ++.. _MPI: ++ ++ ++MPI ++=== ++ ++If ``WITH_MPI`` is ``ON``, MPI is detected via the standard ++cmake ``find_package(MPI)``. See the cmake documentation for more ++information. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/python.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/python.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/python.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/python.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,88 @@ ++.. index:: Python ++.. _python_external: ++ ++======== ++ Python ++======== ++ ++By default, Boost.CMake will use the python detection built in to ++cmake. The relevant variables (command line or environment) are: ++ ++.. index:: PYTHON_EXECUTABLE ++.. _python_executable: ++ ++PYTHON_EXECUTABLE ++----------------- ++ ++The path to the python executable, e.g. ``/usr/local/Python-3.1.1/bin/python3`` ++ ++.. index:: PYTHON_DEBUG_LIBRARIES ++.. _python_debug_libraries: ++ ++PYTHON_DEBUG_LIBRARIES ++---------------------- ++ ++The path to the python debug library, typically only used by developers. ++ ++.. index:: PYTHON_LIBRARIES ++.. _python_libraries: ++ ++PYTHON_LIBRARIES ++---------------- ++ ++The path to the python library, ++e.g. ``/usr/local/Python-3.1.1/lib/libpython3.1.so`` ++ ++.. index:: PYTHON_INCLUDE_PATH ++.. index:: Python.h ++.. _python_include_path: ++ ++PYTHON_INCLUDE_PATH ++------------------- ++ ++The path to the include directory, ++e.g. ``/usr/local/Python-3.1.1/include/python3.1``. Note that cmake ++will check for the file ``Python.h`` in this directory and complain if ++it is not found. ++ ++There are two ways to specify these, on the command line or via ++environment variables. Environment variables will override command ++line flags if present. ++ ++.. rubric:: Command line ++ ++:: ++ ++ % cmake ../src -DPYTHON_EXECUTABLE=/path/to/bin/python3 \ ++ -DPYTHON_LIBRARIES=/path/to/libpython3.1.so \ ++ -DPYTHON_INCLUDE_PATH=/path/to/include/python3.1 ++ ++.. rubric:: Exported environment variables ++ ++:: ++ ++ % export PYTHON_EXECUTABLE=/path/to/bin/python ++ % export PYTHON_LIBRARIES=/path/to/libpython3.1.so ++ % export PYTHON_INCLUDE_PATH=/path/to/include/python3.1 ++ % cmake ../src ++ ++Either way, in the configuration output, you should see something ++like:: ++ ++ -- Testing PYTHON_EXECUTABLE from environment ++ -- Ok, using /path/to/bin/python3 ++ -- Testing PYTHON_LIBRARIES from environment ++ -- Ok, using /path/to/lib/libpython3.1.so. ++ -- Skipping optional PYTHON_DEBUG_LIBRARIES: not set. ++ -- Testing PYTHON_INCLUDE_PATH from environment ++ -- Ok, using /path/to/include/python3.1 ++ -- Python: ++ -- executable: /path/to/bin/python3 ++ -- lib: /path/to/lib/libpython3.1.so ++ -- debug lib: ++ -- include path: /path/to/include/python3.1 ++ ++**NOTE**, once successfully detected, the python configuration will ++not be redetected. To modify, edit the relevant entries in your ++CMakeCache.txt, or delete it entirely to trigger redetection. ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,27 @@ ++.. index:: Valgrind, external dependency ++.. _Valgrind: ++ ++ ++Valgrind ++======== ++ ++Boost.cmake does a standard path search for ``valgrind``. If found, ++it sets the following variables ++ ++ +++----------------------------------------+----------------------------------------+ ++|``VALGRIND_FOUND`` |Was valgrind found | +++----------------------------------------+----------------------------------------+ ++|``VALGRIND_FLAGS`` |"--tool=memcheck" | +++----------------------------------------+----------------------------------------+ ++|``VALGRIND_EXECUTABLE`` |path to the executable | +++----------------------------------------+----------------------------------------+ ++ ++.. index:: WITH_VALGRIND ++ ++If the setting ``WITH_VALGRIND`` is ``ON``, (see ++:ref:`external_dependencies`) then tests will be run under valgrind. ++Tip: CTest's ``-V`` flag will show you the exact commands run and ++output of each test. ++ ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,18 @@ ++.. index:: Xsltproc, external dependency ++.. _Xsltproc: ++ ++ ++Xsltproc ++======== ++ ++Boost.cmake does a standard path search for ``xsltproc``. If found, ++it sets the following variables ++ ++ +++----------------------------------------+----------------------------------------+ ++|``XSLTPROC_FOUND`` |Was xsltproc found | +++----------------------------------------+----------------------------------------+ ++|``XSLTPROC_FLAGS`` |"--xinclude" | +++----------------------------------------+----------------------------------------+ ++|``XSLTPROC_EXECUTABLE`` |path to the executable | +++----------------------------------------+----------------------------------------+ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,17 @@ ++.. index:: zlib, external dependency ++.. _zlib: ++ ++ ++Zlib ++===== ++ ++If ``WITH_ZLIB`` is ``ON``, Zlib is detected via the standard cmake ++``find_package(Zlib)``. The following variables are set: ++ +++----------------------+----------------------------------------+ ++|``ZLIB_FOUND`` |Zlib was found | +++----------------------+----------------------------------------+ ++|``ZLIB_INCLUDE_DIR`` |Path to Zlib includes | +++----------------------+----------------------------------------+ ++|``ZLIB_LIBRARIES`` |Libraries to link to when using Zlib | +++----------------------+----------------------------------------+ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/faq.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/faq.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/faq.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/faq.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,42 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _faq: ++ ++FAQ ++=== ++ ++A collection of asked questions. ++ ++ ++How do I set ``/D _SECURE_SCL=0`` on the commandline for release builds? ++------------------------------------------------------------------------ ++ ++* Run the cmake gui, pick the source and build directories, click ++ *Configure* ++ ++* Find the entry called ``RELEASE_COMPILE_FLAGS`` and modify to taste. ++ (See also :ref:`per_feature_flags`) ++ ++* Click *Configure* again, settings will be regenerated with your ++ flags intact. ++ ++* Click *Generate* ++ ++* Run Visual Studio, navigate to the build directory, open ++ ``Boost.sln``, build, profit. ++ ++Note: I couldn't find the magic checkbox to tell visual studio show me ++what commands it executes while building. I switched the cmake gui to ++'advanced mode' and change CMAKE_VERBOSE_MAKEFILES to TRUE. Is there a ++more 'visualstudioesque' way to do this? ++ ++-t ++ ++ ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,60 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: find_package(Boost) ++.. index:: FindBoost.cmake ++ ++.. _find_package_boost: ++ ++find_package(Boost) ++=================== ++ ++See :ref:`install_customization` for more information about variables ++used in this section. ++ ++If you plan on using the ``FindBoost.cmake`` packaged with cmake ++versions 2.8.0 and earlier, (that is, third party packages that build ++with cmake need to find this boost installation via the cmake command ++``find_package(Boost...``), you will need to layout your boost ++installation in a way that is consistent with the way boost was ++installed by bjam during the many Dark Years. Michael Jackson of ++bluequartz.net reports success with the configuration below. He ++refers to boost.cmake variables :ref:`install_versioned`, ++:ref:`boost_include_install_dir`, and :ref:`boost_lib_install_dir`:: ++ ++ > Set INSTALL_VERSIONED=OFF ++ > set BOOST_INCLUDE_INSTALL_DIR=include/boost-1_41 ++ > set BOOST_LIB_INSTALL_DIR=lib ++ > ++ > and then go. I also set an environment variable BOOST_ROOT to the ++ > CMAKE_INSTALL_PREFIX. ++ > ++ > In my CMake file I have the following; ++ > ++ > # ---------- Find Boost Headers/Libraries ----------------------- ++ > SET (Boost_FIND_REQUIRED TRUE) ++ > SET (Boost_FIND_QUIETLY TRUE) ++ > set (Boost_USE_MULTITHREADED TRUE) ++ > set (Boost_USE_STATIC_LIBS TRUE) ++ > SET (Boost_ADDITIONAL_VERSIONS "1.41" "1.41.0") ++ > ++ > if ( NOT MXA_BOOST_HEADERS_ONLY) ++ > set (MXA_BOOST_COMPONENTS program_options unit_test_framework ++ > test_exec_monitor) ++ > endif() ++ > FIND_PACKAGE(Boost COMPONENTS ${MXA_BOOST_COMPONENTS} ) ++ > INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) ++ > LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) ++ > ++ > This successfully works with the FindBoost.cmake that is included with CMake 2.6.4 ++ > ++ ++Currently in development there are other, perhaps easier, ways to ++detect your boost installations if you aren't dependent on this older ++FindBoost; see :ref:`exported_targets`. ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/git.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/git.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/git.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/git.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,190 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. highlight:: git_shell ++ ++.. _hacking_cmake_with_git: ++ ++Hacking Boost.CMake with Git ++============================ ++ ++Boost-cmake, in addition to using an alternative build system, uses ++alternate version control. This makes boost.cmake feasable: without ++distributed version control it would be very difficult to maintain a ++build system against upstream boost. ++ ++This document will review some common version-control procedures for ++those who are unfamiliar with git. More documentation is available at ++`Hacking Boost via Git ++`_. ++ ++ ++The first step is to get `Git `_. Any recent ++version will do. On windows, git downloads come with a bash shell, so ++the commandline interface is essentially identical. There is also ++`TortoiseGit `_, which is ++evolving quickly and quite usable. ++ ++I just want to try the HEAD of the branch ++---------------------------------------------------- ++ ++Pick some directory to work in. Here I'll use ``/tmp``. My prompt is ++a percent sign. Clone the repository to a subdirectory called ++``src``. This will take a while the first time, after that things ++will be very fast. ++ ++:: ++ ++ % git clone git://gitorious.org/boost/cmake.git src ++ Initialized empty Git repository in /tmp/src/.git/ ++ remote: Counting objects: 425396, done. ++ remote: Compressing objects: 100% (129689/129689), done. ++ remote: Total 425396 (delta 298454), reused 419119 (delta 292368) ++ Receiving objects: 100% (425396/425396), 135.56 MiB | 1260 KiB/s, done. ++ Resolving deltas: 100% (298454/298454), done. ++ Checking out files: 100% (23865/23865), done. ++ ++inside this directory you'll see the branch that is checked out:: ++ ++ % cd src ++ % git branch -l ++ * 1.41.0 ++ ++This means I'm on the ``1.41.0`` branch, and the files are checked ++out:: ++ ++ % ls ++ CMakeLists.txt boost/ bootstrap.sh* libs/ tools/ ++ CTestConfig.cmake boost-build.jam build/ more/ wiki/ ++ INSTALL boost.css doc/ people/ ++ Jamroot boost.png index.htm rst.css ++ LICENSE_1_0.txt bootstrap.bat index.html status/ ++ ++Now you can go ahead and do your out-of-source build. ++ ++I want to svn update ++-------------------- ++ ++When new changes arrive upstream, you'll want to ``git pull``:: ++ ++ % git pull ++ remote: Counting objects: 310, done. ++ remote: Compressing objects: 100% (45/45), done. ++ remote: Total 205 (delta 154), reused 203 (delta 152) ++ Receiving objects: 100% (205/205), 49.59 KiB, done. ++ Resolving deltas: 100% (154/154), completed with 81 local objects. ++ From git://gitorious.org/boost/cmake ++ 1818334..b945719 1.41.0 -> origin/1.41.0 ++ Updating 1818334..b945719 ++ Fast forward ++ CMakeLists.txt | 6 +- ++ CTestConfig.cmake | 5 +- ++ ... ++ 83 files changed, 1071 insertions(+), 537 deletions(-) ++ ++.. _makeremote: ++ ++But I want a different branch than that ++--------------------------------------- ++ ++``git branch -r`` will show your 'remote' branches:: ++ ++ % git branch -r ++ origin/1.40.0 ++ origin/1.41.0 ++ origin/HEAD -> origin/1.41.0 ++ origin/master ++ ++This shows that in *origin* (the repository you cloned from), there ++are *1.40.0*, *1.41.0*, and *master* branches. To switch to e.g. the ++*1.40.0* branch, you make a local branch that 'tracks' the upstream ++branch:: ++ ++ % git checkout -b 1.40.0 origin/1.40.0 ++ Branch 1.40.0 set up to track remote branch 1.40.0 from origin. ++ Switched to a new branch '1.40.0' ++ ++Now you will see this new local branch in your branch list:: ++ ++ % git branch -l ++ * 1.40.0 # the star means this one is checked out ++ 1.41.0 ++ ++And your status will show it as well:: ++ ++ % git status ++ # On branch 1.40.0 ++ nothing to commit (working directory clean) ++ ++now, any *git pull*\ -ing you do will come from the upstream *1.40.0* ++branch in to your local 1.40.0 branch. ++ ++I have changes, how do I make a patch? ++-------------------------------------- ++ ++Just change the files and ``git diff``:: ++ ++ % git diff ++ diff --git a/CMakeLists.txt b/CMakeLists.txt ++ index d2bc809..d5e055e 100644 ++ --- a/CMakeLists.txt ++ +++ b/CMakeLists.txt ++ @@ -27,6 +27,10 @@ ++ cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR) ++ project(Boost) ++ ++ +# ++ +# These are my changes ++ +# ++ + ++ ########################################################################## ++ # Version information # ++ ########################################################################## ++ @@ -323,6 +327,7 @@ endif() ++ ++ mark_as_advanced(BOOST_EXPORTS_FILE BOOST_INSTALL_EXPORTS_FILE) ++ ++ +# and some here too ++ # Add build rules for documentation ++ add_subdirectory(doc) ++ ++and mail it in. ++ ++Oops, I screwed up and want to revert ++------------------------------------- ++ ++Use ``git reset``:: ++ ++ % git reset --hard HEAD ++ HEAD is now at e26008e Don't build tools by default. All they do is break. ++ ++I want to switch branches ++------------------------- ++ ++If you've already created a local branch, i.e. it appears in the ++output of ``git branch -l``:: ++ ++ % git branch -l ++ * 1.40.0 ++ 1.41.0 ++ ++Then just check it out:: ++ ++ % git checkout 1.41.0 ++ Switched to branch '1.41.0' ++ ++ % git branch -l ++ 1.40.0 ++ * 1.41.0 ++ ++ % git status ++ # On branch 1.41.0 ++ nothing to commit (working directory clean) ++ ++If not (i.e. it only appears in the output of ``git branch -r``), ++see :ref:`makeremote`. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/index.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/index.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/index.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/index.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,141 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++Boost-CMake |release| ++===================== ++ ++Boost.\ `CMake `_ (or :ref:`alt.boost ++`) is the boost distribution that all the cool kids are ++using. The effort started in earnest at `BoostCon '07 ++`_; by the end of which it was possible to do ++a basic build of boost with cmake. In 2009, the project moved out to ++git version control. Today, ``Boost.CMake`` is stable, mature, and ++supported by the developers, a large base of expert users, and ++occasionally by the authors of CMake itself. ++ ++.. index:: Mailing List, IRC ++ ++**boost-cmake mailing list** ++ ++ http://lists.boost.org/mailman/listinfo.cgi/boost-cmake ++ ++**IRC** ++ ++ ``#boost-cmake`` on the `freenode network `_ ++ ++**CMake home page** ++ ++ http://www.cmake.org ++ ++**Source code** ++ ++ Boost.CMake is distributed *separately* from upstream boost. Code ++ is in a `git `_ repository at ++ http://gitorious.org/boost/cmake.git. These documents correspond to ++ tag |release|. See also :ref:`hacking_cmake_with_git`. ++ ++**Tarballs** ++ ++ Tarballs and zipfiles are available at ++ http://sodium.resophonic.com/boost-cmake/ in subdirectory |release|. ++ ++Users's guide ++============= ++ ++.. toctree:: ++ :maxdepth: 3 ++ ++ quickstart ++ build_configuration ++ build_variants ++ exported_targets ++ install_customization ++ find_package_boost ++ faq ++ externals/index ++ git ++ diff ++ ++Developer's guide ++================= ++ ++.. toctree:: ++ :maxdepth: 3 ++ ++ individual_libraries ++ add_boost_library ++ add_compiled_library ++ testing ++ adding_regression_tests ++ build_installer ++ notes_by_version ++ ++Reference ++========= ++ ++.. toctree:: ++ :maxdepth: 1 ++ ++ reference/boost_library_project ++ reference/boost_module ++ reference/boost_add_library ++ reference/boost_add_executable ++ reference/boost_python_module ++ reference/boost_additional_test_dependencies ++ reference/boost_test_compile ++ reference/boost_test_compile_fail ++ reference/boost_test_run ++ reference/boost_test_run_fail ++ ++About this documentation ++======================== ++ ++This documentation was created with `Sphinx ++`_. ++ ++The source is in the restructuredtext files in subdirectory ++``tools/build/CMake/docs/source/``. Hack on them (see the ++`documentation for Sphinx `_). ++When you're ready to see the html:: ++ ++ make html ++ ++Once you've written a ton of docs, push them someplace where I can see ++them (or use ``git diff`` to send a patch). ++ ++Release checklist ++----------------- ++ ++* Update ``BOOST_CMAKE_VERSION`` in toplevel ``CMakeLists.txt`` ++* Update notes by version in ``tools/build/CMake/docs/notes_by_version.rst`` ++* Reconfig cmake with ``BOOST_MAINTAINER`` set to ON ++* set UPSTREAM_TAG in root ``CMakeLists.txt`` ++* make make-diff ++* Rebuild docs and commit ++* Tag commit with ``BOOST_CMAKE_VERSION`` ++* ``make do-release`` ++* push tag ++* update wiki ++ ++.. index:: alt.boost ++ single: Anarchists; Lunatics, Terrorists and ++ single: Lunatics; Anarchists Terrorists and ++ single: Terrorists; Anarchists Lunatics and ++ ++.. _alt_boost: ++ ++Why "alt.boost"? ++---------------- ++ ++The 'alt' is a reference to the ``alt.*`` Usenet hierarchy. Here, as ++in Usenet, *alt* stands for `Anarchists, Lunatics and Terrorists ++`_. This independent effort explores ++and applies alternate techniques/technologies in the areas of build, ++version control, testing, packaging, documentation and release ++management. ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,160 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++Building individual libraries with cmake ++======================================== ++ ++In a configured cmake workspace, ``make help`` will display a list of available targets. Example:: ++ ++ % make help ++ The following are some of the valid targets for this Makefile: ++ ... all (the default if no target is provided) ++ ... clean ++ ... depend ++ ... edit_cache ++ ... install ++ ... install/local ++ ... install/strip ++ ... list_install_components ++ ... package ++ ... package_source ++ ... rebuild_cache ++ ... boost_date_time ++ ... boost_date_time-mt-shared ++ ... boost_date_time-mt-shared-debug ++ ... boost_date_time-mt-static ++ ... boost_date_time-mt-static-debug ++ ... boost_date_time-shared ++ ... boost_date_time-shared-debug ++ ... boost_date_time-static ++ ... boost_date_time-static-debug ++ ... boost_filesystem ++ ... boost_filesystem-mt-shared ++ ... boost_filesystem-mt-shared-debug ++ ... boost_filesystem-mt-static ++ ... boost_filesystem-mt-static-debug ++ ... boost_filesystem-shared ++ ... boost_filesystem-shared-debug ++ ... boost_filesystem-static ++ ... boost_filesystem-static-debug ++ [etc] ++ ++ ++You can build any target by passing it as an argument:: ++ ++ ++ % make boost_signals-static ++ [ 0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/trackable.cpp.o ++ [ 0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/connection.cpp.o ++ [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/named_slot_map.cpp.o ++ [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/signal_base.cpp.o ++ [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/slot.cpp.o ++ Linking CXX static library ../../../lib/libboost_signals-gcc41-1_35.a ++ [100%] Built target boost_signals-static ++ ++Preprocessing ++------------- ++ ++In build directories corresponding to a source library containing a ++``CMakeLists.txt`` containing a :ref:`boost_add_library_macro` invocation ++(e.g. ``build/libs/signals/src, build/libs/filesystem/src``), more ++detailed targets are available:: ++ ++ % cd libs/signals/src ++ % make help ++ The following are some of the valid targets for this Makefile: ++ [many omitted] ++ ... signal_base.o ++ ... signal_base.i ++ ... signal_base.s ++ ... slot.o ++ ... slot.i ++ ... slot.s ++ ++ ++making ``slot.i`` will run ``slot.cpp`` through the preprocessor:: ++ ++ % make slot.i ++ Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i ++ ++If you are always interested in seeing the compiler flags you can ++enable ``CMAKE_VERBOSE_MAKEFILES`` via ``ccmake``, or for a one-off ++just pass ``VERBOSE=1`` on the command line:: ++ ++ % make VERBOSE=1 slot.i ++ make[1]: Entering directory `/home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build' ++ Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i ++ cd /home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build/libs/signals/src && /usr/bin/gcc-4.1 ++ -DBOOST_ALL_NO_LIB=1 -DBOOST_SIGNALS_NO_LIB=1 -Dboost_signals_mt_shared_EXPORTS -fPIC ++ -I/home/troy/Projects/boost/branches/CMake/Boost_1_35_0 -O3 -DNDEBUG -DBOOST_SIGNALS_DYN_LINK=1 ++ -pthread -D_REENTRANT -E /home/troy/Projects/boost/branches/CMake/Boost_1_35_0/libs/signals/src/slot.cpp > CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i ++ ++Tests and examples ++------------------ ++ ++Tests and examples are typically grouped into subdirectories, e.g.:: ++ ++ libs/ ++ iostreams/ ++ test/ ++ examples/ ++ ++CMake builds a parallel directory hierarchy in the build directory. If ++you are working on, say, the examples for iostreams, you can just ++``cd`` into the directory $BUILDDIR/libs/iostreams/examples and type ++``make``:: ++ ++ % cd libs/iostreams/example ++ % make ++ [ 0%] Built target boost_iostreams-mt-static ++ Scanning dependencies of target iostreams-examples-boost_back_inserter_example ++ [ 0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-boost_back_inserter_example.dir/boost_back_inserter_example.cpp.o ++ Linking CXX executable ../../../bin/iostreams-examples-boost_back_inserter_example ++ [ 0%] Built target iostreams-examples-boost_back_inserter_example ++ Scanning dependencies of target iostreams-examples-container_device_example ++ [ 0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-container_device_example.dir/container_device_example.cpp.o ++ Linking CXX executable ../../../bin/iostreams-examples-container_device_example ++ [ 0%] Built target iostreams-examples-container_device_example ++ Scanning dependencies of target iostreams-examples-container_sink_example ++ [ 0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-container_sink_example.dir/container_sink_example.cpp.o ++ ++Building individual targets, ignoring prerequisites ++--------------------------------------------------- ++ ++If you find yourself working on a compiler error in a file that takes ++a long time to compile, waiting for make to check all of the ++prerequisites might become tedious. You can have make skip the ++prerequisite testing (you do this at your own risk), by appending ++``/fast`` to the target name. For instance, bcp depends on the ++``system``, ``filesystem`` ``regex`` and ``prg_exec_monitor`` ++libraries:: ++ ++ % cd tools/bcp ++ % make bcp ++ [ 0%] Built target boost_system-mt-static ++ [ 0%] Built target boost_filesystem-mt-static ++ [ 50%] Built target boost_regex-mt-static ++ [ 75%] Built target boost_prg_exec_monitor-mt-static ++ [ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/add_path.cpp.o ++ ++if I make ``bcp/fast``, the dependencies are assumed to be built ++already:: ++ ++ % make bcp/fast ++ [ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/add_path.cpp.o ++ [ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/bcp_imp.cpp.o ++ (etc) ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/install_customization.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/install_customization.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/install_customization.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/install_customization.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,204 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _install_customization: ++ ++Customizing the install ++======================= ++ ++Here you'll find ways to customize your installation. If you're ++trying to make the install play nice with cmake's ``find_package``, ++see :ref:`find_package_boost`. ++ ++.. index:: CMAKE_INSTALL_PREFIX ++ single: installation ++ ++.. _cmake_install_prefix: ++ ++CMAKE_INSTALL_PREFIX ++-------------------- ++ ++This is a standard cmake option that sets the path to which boost ++will be installed. ++ ++.. index:: DESTDIR ++ ++CMake generates makefiles that play nice with ``DESTDIR``. e.g. ++if you configure like this:: ++ ++ cmake ../src -DCMAKE_INSTALL_PREFIX=/tmp/blah ++ ++and install with ``DESTDIR=/foo make install``, you'll get files ++installed to ``/foo/tmp/blah``. ++ ++.. index:: LIB_SUFFIX ++.. _lib_suffix: ++ ++LIB_SUFFIX ++---------- ++ ++This defines the subdirectory of ``CMAKE_INSTALL_PREFIX`` to which ++libraries will be installed. It is empty by default. For example, ++if I'm on 64-bit fedora, I want the libs installed to ++``/usr/lib64``, I'd use:: ++ ++ cmake ../src -DCMAKE_INSTALL_PREFIX=/usr -DLIB_SUFFIX=64 ++ ++.. index:: INSTALL_VERSIONED ++.. _install_versioned: ++ ++INSTALL_VERSIONED ++----------------- ++ ++**ON** by default on unix, **OFF** on windows. ++ ++This is a different mangling than :ref:`WINMANGLE_LIBNAMES`: this ++variable controls whether boost versions will be mangled into the ++paths into which boost is installed. This option **has effect only ++when CMake is run the first time**: they will be set as explained ++below the first time thereafter not modified, so that the paths are ++customizable by users. (ie If you have configured a build and change ++this option, it will have no effect, you must start "from scratch") ++ ++.. rubric:: Example ++ ++For boost version 1.41.0, with this option ON, the installation tree ++is:: ++ ++ $CMAKE_INSTALL_PREFIX/ ++ include/ ++ boost-1.41.0/ ++ boost/ ++ version.hpp ++ ... ++ lib/ ++ boost-1.41.0/ ++ libboost_signals-mt-d.so ++ ... ++ ++and without it, :: ++ ++ $CMAKE_INSTALL_PREFIX/ ++ include/ ++ boost/ ++ version.hpp ++ ... ++ lib/ ++ boost/ ++ libboost_signals-mt-d.so ++ ... ++ ++**Note:** ``lib/`` above will contain :ref:`LIB_SUFFIX` if set. ++ ++See also :ref:`BUILD_SOVERSIONED` ++ ++The relative lib and include pathnames can be controlled individually ++with the following two variables: ++ ++.. index:: BOOST_LIB_INSTALL_DIR ++.. _boost_lib_install_dir: ++ ++BOOST_LIB_INSTALL_DIR ++--------------------- ++ ++The directory to which libs will be installed under ++:ref:`CMAKE_INSTALL_PREFIX`. ++ ++.. index:: BOOST_INCLUDE_INSTALL_DIR ++.. _boost_include_install_dir: ++ ++BOOST_INCLUDE_INSTALL_DIR ++------------------------- ++ ++The directory to which boost header files will be installed under ++:ref:`CMAKE_INSTALL_PREFIX`. ++ ++.. index:: BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR ++.. _boost_cmake_infrastructure_install_dir: ++ ++BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR ++-------------------------------------- ++ ++This is a directory to which the targets from this boost install will ++be exported, by default ``${CMAKE_INSTALL_PREFIX}/share/boost-``\ ++|version|\ ``/cmake``: this significanly eases detection of boost ++installations by CMake. The name of the files are ++``BoostConfig.cmake`` and ``BoostConfigVersion.cmake`` [#findpackage]_. ++See :ref:`exported_targets` for ++more information about how users employ this file. ++ ++If this is a full path, it will be used directly, otherwise it will be ++interpreted relative to ``${CMAKE_INSTALL_PREFIX}``. ++ ++.. index:: BOOST_INSTALL_CMAKE_DRIVERS ++.. _boost_install_cmake_drivers: ++ ++BOOST_INSTALL_CMAKE_DRIVERS ++--------------------------- ++ ++Specifies whether generic cmake driver files should be installed, ++see the next option to customize where. This variable is ++``ON`` by default. ++ ++BOOST_CMAKE_DRIVERS_INSTALL_DIR ++------------------------------- ++ ++There are two optional version-agnostic driver files that can be ++installed to a central location, by default ++``${CMAKE_INSTALL_PREFIX}/share/boost-``\ |version|\ ``/cmake``. ++ ++named ``BoostConfig.cmake`` and ``BoostConfigVersion.cmake``. These ++two files coordinate with Boost-|version|.cmake to enable cmake ++developers who use both boost and cmake to find local boost ++installations via the standard cmake incantation:: ++ ++ find_package(Boost 1.41.0 COMPONENTS thread iostreams) ++ ++These driver files should be the same from release to release. ++ ++This variable allows modification of this location; If this is a full ++path, it will be used directly, otherwise it will be interpreted ++relative to ``${CMAKE_INSTALL_PREFIX}``. ++ ++.. index:: BOOST_EXPORTS_FILE ++.. _BOOST_EXPORTS_FILE: ++ ++BOOST_EXPORTS_FILE ++------------------ ++ ++This is the path *in the build tree* to the file that will contain ++CMake exported targets, by default it is:: ++ ++ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Exports.cmake ++ ++See :ref:`exported_targets` for information on how to use this handy ++file when building against an **uninstalled** boost. *This variable ++has no effect on installation, and is only useful if building separate ++cmake projects against an uninstalled boost.* ++ ++If this is a full path, it will be used directly, otherwise it will be ++interpreted relative to ``${CMAKE_BINARY_DIR}``. ++ ++.. index:: BOOST_INSTALL_EXPORTS_FILE ++.. _BOOST_INSTALL_EXPORTS_FILE: ++ ++BOOST_EXPORTS_INSTALL_DIR ++------------------------- ++ ++This is the path to which exported targest will be installed. By ++default it is ``${BOOST_LIB_INSTALL_DIR}``. This must be a ++**relative** path. ++ ++See :ref:`exported_targets` for information on how to use this handy ++file to build against an **installed** boost. ++ ++ ++ ++.. rubric:: Footnotes ++ ++.. [#findpackage] See also the cmake docs for ``find_package()``. +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,226 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++Notes by Boost Version ++====================== ++ ++1.41.0.cmake1 ++------------------- ++ ++Again, innumerable tiny tweaks. ++ ++1.41.0.beta1.cmake1 ++------------------- ++ ++This is the first cmake beta based on upstream ``Boost_1_41_0_beta1``. ++There are *way* too many enhancements to mention. ++ ++1.41.0.cmakebeta4 ++----------------- ++ ++* CMake minimum 2.6.4 required (found bugs with 2.6.2) ++* Move MPI detection up ++* Clean up output ++ ++1.41.0.cmakebeta3 ++----------------- ++ ++* :ref:`variants` names switched to ``ENABLE_`` to distinguish ++ from ``BUILD_*`` options. ++ ++* Many docs improvements ++ ++* Special targets for the boost-cmake maintainer ++ ++* :ref:`BUILD_PROJECTS` ``(= NONE|ALL|proj1;proj2;...;projN)`` ++ variable for building only certain projects. ++ ++* :ref:`BUILD_EXAMPLES` ``(= NONE|ALL|proj1;proj2;...;projN)`` ++ variable for building examples only of certain projects. ++ ++* :ref:`LIB_SUFFIX` for installing libs to nonstandard lib directory ++ name, e.g. for LIB_SUFFIX=64, libs installed to ``$PREFIX/lib64`` ++ ++* Testing improvements: cmake now runs 2408 tests, 99% of which pass. ++ This isn't the full set, upstream is a moving target. The few ++ remaining failures (assuming upstream is bug-free) are assumed to be ++ problems in the testing setup, not the underlying libraries. ++ ++* Python: python location customizable via command line or environment ++ variables, see :ref:`external_dependencies`. ++ ++(1.41.0.cmakebeta1 and 2 omitted) ++ ++1.41.0 (upstream) ++----------------- ++ ++This release (as released by upstream Boost) does **not** contain ++CMake support. See above for independenly released CMake versions. ++ ++1.40.0.cmake4 ++------------- ++ ++Backport features from 1.41.0.cmakebeta3 ++ ++1.40.0.cmake3 ++------------- ++ ++Skipped ++ ++1.40.0.cmake2 ++------------- ++ ++* Modularization disabled... this can waste your source directory ++ and was causing confusion. ++* Docs tagged with specific boost-cmake release version. ++ ++1.40.0.cmake1 ++------------- ++ ++From the boost-cmake list:: ++ ++ > As of now, your Boost 1.40.0 branch builds and installs without error ++ > for me on Windows (Intel 11.1, Visual Studio 2009, Visual Studio 2010 ++ > Beta 1), Linux (GCC 4.2, GCC 4.4, Intel 11.1), and Mac OS X 10.6 (GCC ++ > 4.2, Intel 11.1). ++ ++This version also includes fixes for cmake version 2.8 (as of this ++writing, in beta). ++ ++Special thanks in alphabetical order: ++ ++* Claudio Bley ++* Justin Holewinski ++* Philip Lowman ++ ++1.40.0.cmake0 ++------------- ++ ++This version works on windows with MSVC and linux with gcc. ++ ++1.40.0 ++------ ++ ++This version is **broken** in the svn distribution. See later ++releases with the ``.cmakeN`` suffix. ++ ++1.38.0 and 1.39.0 ++----------------- ++ ++.. warning:: -DCMAKE_IS_EXPERIMENTAL=ORLY_YARLY ++ ++ This guard variable is included in releases of Boost.CMake through ++ version 1.38. You just need to set this variable to some value (be ++ creative) when running cmake for the first time to disable the ++ guard. ++ ++Boost.CMake was included as an experimental system for the first time. ++It is perfectly capable of doing the basic build and install of boost. ++You *must* pass the argument :: ++ ++ -DCMAKE_IS_EXPERIMENTAL=ORLY ++ ++to the initial run of cmake, or you will see an intimidating message ++explaining that Boost.CMake != Boost.Build. It looks like this:: ++ ++ -- ########################################################################## ++ -- ++ -- Only Boost.Build is officially supported. ++ -- ++ -- This is not Boost.Build. ++ -- ++ -- This is an alternate, cmake-based build system that is currently under development. ++ -- To try it out, invoke CMake with the argument ++ -- -DCMAKE_IS_EXPERIMENTAL=YES_I_KNOW ++ -- Or use the gui to set the variable CMAKE_IS_EXPERIMENTAL to some value. ++ -- This will only be necessary the first time. ++ -- ++ -- For more information on boost-cmake see the wiki: ++ -- https://svn.boost.org/trac/boost/wiki/CMake ++ -- ++ -- Subscribe to the mailing list: ++ -- http://lists.boost.org/mailman/listinfo.cgi/boost-cmake ++ -- ++ -- NOTE: Please ask questions about this build system on the boost-cmake list, ++ -- not on other boost lists. ++ -- ++ -- And/or check the archives: ++ -- http://news.gmane.org/gmane.comp.lib.boost.cmake ++ -- ++ -- ########################################################################## ++ CMake Error at CMakeLists.txt:61 (message): ++ Magic variable CMAKE_IS_EXPERIMENTAL unset. ++ ++ ++ -- Configuring incomplete, errors occurred! ++ ++Again, f you see this, just set that guard variable to something, to ++demonstrate your tenacity and dedication. Then things will work fine. ++ ++.. rubric:: Quick and dirty HOWTO ++ ++:: ++ ++ % mkdir /tmp/boost ++ % cd /tmp/boost ++ % svn co https://svn.boost.org/svn/boost/tags/release/Boost_1_38_0 src ++ % mkdir build ++ % cd build ++ % cmake -DCMAKE_IS_EXPERIMENTAL=ORLY -DCMAKE_INSTALL_PREFIX=/path/to/installdir ../src ++ ++At this point, you have two options: you either want to leave boost in ++place and use it there, or you want to install it to a particular ++location. ++ ++**In-place** ++ ++ If you're competent to specify header/library paths ++ yourself and want to build in place:: ++ ++ % make ++ ++ and your libraries will be in /tmp/boost/build/lib, and the headers in ++ /tmp/boost/src, (where you'd expect them to be). ++ ++**Installed to some location** ++ ++ This will install boost to ``lib/`` and ``include/`` under the ++ ``CMAKE_INSTALL_PREFIX`` given above:: ++ ++ % make modularize # shuffles some headers around ++ % make install ++ ++.. warning:: ++ ++ In versions 1.38 and 1.39, if you want to ``make install``, you ++ *must* ``make modularize`` first. This is an intermediate step ++ that we expect to go away in future versions. ++ ++Also note that cmake supports ``DESTDIR`` for making .deb and .rpm ++packages; see the standard cmake documentation ++ ++Known Issues ++^^^^^^^^^^^^ ++ ++* There isn't much support for building/running tests within boost in ++ these releases. ++* In version 1.39, the ``BOOST_VERSION_MINOR`` is wrong: it is set to ++ 1.38. You can set this manually by looking for ++ ``BOOST_VERSION_MINOR`` in the toplevel ``CMakeLists.txt`` ++* The boost build names the ``boost_prg_exec_monitor`` and ++ ``boost_unit_test_framework`` libraries with an additional trailing ++ ``-s``. You will probably need to modify your build if you use ++ these libraries. ++ ++ ++1.35.0 - 1.37 ++------------- ++ ++There was a CMake branch that built these releases, but Boost.CMake ++was not included in the official distribution. ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/quickstart.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/quickstart.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/quickstart.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/quickstart.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,248 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++ ++.. _quickstart: ++ ++Quickstart ++========== ++ ++This page describes how to configure and build Boost with CMake. By ++following these instructions, you should be able to get CMake, ++configure a Boost build tree to your liking with CMake, and then ++build, install, and package Boost libraries. ++ ++Download CMake ++-------------- ++ ++You can get it here: http://www.cmake.org/HTML/Download.html ++ ++There are precompiled binaries for CMake on several different ++platforms. The installation of these pre-compiled binaries is mostly ++self-explanatory. If you need to build your own copy of CMake, please ++see the `CMake installation instructions ++`_. ++ ++.. note:: ++ ++ In these instructions, we will do things such that the Boost source ++ tree (with CMake build files) is available in the directory ++ ``$BOOST/src`` and that the build will happen in ``$BOOST/build``:: ++ ++ $BOOST/ ++ src/ # (source checked out to here) ++ build/ # (build output here) ++ ++ Note that it is *not* actually necessary to set any environment ++ variable ``BOOST``, this is a convention used in this document. ++ ++Checkout / download the code ++---------------------------- ++ ++Tarballs and zipfiles are avaiable at ++http://sodium.resophonic.com/boost-cmake in subdirectory |release|. ++ ++Boost.CMake is distributed *separately* from upstream boost. Code is ++in a `git `_ repository at ++http://gitorious.org/boost/cmake.git. These documents correspond to ++tag |release|. You can clone the repository locally and then check out ++the tag:: ++ ++ git clone git://gitorious.org/boost/cmake.git src ++ cd src ++ git checkout ++ ++where ```` is |release| ++ ++On Unix ++------- ++ ++Create and change to the directory that will hold the binaries that ++CMake build:: ++ ++ mkdir $BOOST/build ++ cd $BOOST/build ++ ++.. _unix_configure: ++ ++Configure ++^^^^^^^^^ ++ ++Run the CMake configuration program, providing it with the Boost ++source directory:: ++ ++ cmake -DCMAKE_INSTALL_PREFIX=/somewhere $BOOST/src ++ ++(:ref:`CMAKE_INSTALL_PREFIX` defaults to ``/usr/local`` on unix and ++``C:\\Program Files\Boost`` on windows). Replace ``/somewhere`` above ++with a path you like if the defaults aren't okay. You'll see output ++from ``cmake``. It looks somewhat like this:: ++ ++ -- Check for working C compiler: /usr/bin/gcc ++ -- Check for working C compiler: /usr/bin/gcc -- works ++ -- Check size of void* ++ -- Check size of void* - done ++ -- Check for working CXX compiler: /usr/bin/c++ ++ -- Check for working CXX compiler: /usr/bin/c++ -- works ++ -- Scanning subdirectories: ++ -- + io ++ -- + any ++ -- + crc ++ -- + mpl ++ ++ (etc, etc) ++ ++ -- + program_options ++ -- + ptr_container ++ -- + type_traits ++ -- Configuring done ++ -- Generating done ++ -- Build files have been written to: $BOOST/build ++ ++The directory ``$BOOST/build`` should now contain a bunch of generated ++files, including a top level ``Makefile``, something like this:: ++ ++ % ls ++ CMakeCache.txt CPackConfig.cmake Makefile ++ cmake_install.cmake libs/ CMakeFiles/ ++ CPackSourceConfig.cmake bin/ lib/ ++ ++Build and Install ++^^^^^^^^^^^^^^^^^ ++ ++Now build and install boost:: ++ ++ make install ++ ++You'll see:: ++ ++ Scanning dependencies of target boost_date_time-mt-shared ++ [ 0%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/greg_month.cpp.o ++ [ 0%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/greg_weekday.cpp.o ++ [ 1%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/date_generators.cpp.o ++ Linking CXX shared library ../../../lib/libboost_date_time-mt.so ++ [ 1%] Built target boost_date_time-mt-shared ++ ++ (etc etc) ++ ++ [100%] Built bcp ++ ++ (etc etc) ++ ++ -- Installing: /tmp/flanboost/lib/libboost_wave-mt-d.a ++ -- Installing: /tmp/flanboost/lib/libboost_wave-mt-d.so ++ -- Removed runtime path from "/tmp/flanboost/lib/libboost_wave-mt-d.so" ++ -- Installing: /tmp/flanboost/bin/bcp ++ -- Installing: /tmp/flanboost/bin/inspect ++ ++And you're done. Once the build completes (which make take a while, if ++you are building all of the Boost libraries), the Boost libraries will ++be in a predictable layout under the directory passed to ++:ref:`CMAKE_INSTALL_PREFIX` (default ``/usr/local``) ++ ++Windows ++------- ++ ++There are two different sets of directions: visual studio, which is ++quite specific, and nmake, which is much like the Unix version, above. ++ ++.. index:: Visual Studio ++ ++.. _vs_configure: ++ ++Configuration for Visual Studio ++^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ++ ++Run CMake by selecting it from the Start menu. ++ ++* Use the *Browse...* button next to *Where is the source code* to ++ point CMake at the Boost source code in ``$BOOST\src``. ++* Use the second *Browse...* button to next to *Where to build the ++ binaries* to select the directory where Boost will build binaries, ++ ``$BOOST\build``. ++* Click *Configure* a first time to configure Boost, which will search ++ for various libraries on your system and prepare the build. CMake ++ will ask you what kind of project files or make files to build. If ++ you're using Microsoft Visual Studio, select the appropriate version ++ to generate project files. Otherwise, you can use Borland's make ++ files. If you're using NMake, see the next section. ++* On an XP box with VS9 one sees roughly this in the output window at ++ the bottom:: ++ ++ Check for working C compiler: cl ++ Check for working C compiler: cl -- works ++ Detecting C compiler ABI info ++ Detecting C compiler ABI info - done ++ Check for working CXX compiler: cl ++ Check for working CXX compiler: cl -- works ++ Detecting CXX compiler ABI info ++ Detecting CXX compiler ABI info - done ++ Boost version 1.41.0 ++ Found PythonInterp: C:/Python26/python.exe ++ Found PythonLibs: C:/Python26/libs/python26.lib ++ Boost compiler: msvc ++ Boost toolset: vc90 ++ Boost platform: windows ++ Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) ++ Build name: msvc-9.0-windows ++ + preprocessor ++ + concept_check ++ ... ++ + units ++ + wave ++ Configuring done ++ ++* The messages about 'missing doxygen' and whatnot are not ++ showstoppers for now, so long as configuration is successful. You ++ will be given the opportunity to tune build options in the CMake GUI ++ (see :ref:`configure_and_build` for more detail). They will ++ initially appear red. Click *Configure* again when you are done ++ editing them. The one thing that you may wish to configure as part ++ of this 'quickstart' is ``CMAKE_INSTALL_PREFIX``. ++* Finally, click *Generate* to generate project files. ``Boost.sln``, ++ the VS solution file, will appear in the *where to build the ++ binaries* directory from the cmake gui. ++ ++.. index:: NMake ++.. _NMake: ++ ++Configuration for NMake ++^^^^^^^^^^^^^^^^^^^^^^^ ++ ++* Start a `Visual Studio Command Prompt` from the start menu. This ++ will spawn a command prompt window with certain env variables set. ++ CMake will detect these and automatically choose to generate NMake ++ files. ++ ++* cd to $BOOST/build and execute:: ++ ++ cmake ..\src ++ ++ You will see output very similar to that on unix, see ++ :ref:`unix_configure`. ++ ++Build -- Visual Studio ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ Start up Visual Studio, load the solution or project ``Boost`` from ++ the Boost build directory you set in the CMake configuration ++ earlier. Then, just click *Build* to build all of Boost. ++ ++Build -- NMake ++^^^^^^^^^^^^^^ ++ ++ Execute ``nmake`` from the command prompt in the build directory. ++ ++Installation ++^^^^^^^^^^^^ ++ ++The installation of Boost's headers and compiled libraries uses the ++same tools as building the library. With Microsoft Visual Studio, just ++load the Boost solution or project and build the 'INSTALL' target to ++perform the installation. With NMake, ``nmake install``. ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,140 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_add_executable ++.. _boost_add_executable_macro: ++ ++boost_add_executable ++-------------------- ++ ++Adds an executable to the build ++ ++.. cmake:: boost_add_executable(exename source1 source2 ...) ++ ++ :param source1 source2...: sourcefiles ++ :param COMPILE_FLAGS flag1 flag2 ...: (optional) compile flags ++ :param LINK_FLAGS flag1 flag2 ...: (optional) link flags ++ :param feature_LINK_LIBS lib1 lib2 ...: (optional) link libraries ++ :param DEPENDS dep1 dep2 ...: (optional) intraboost dependencies ++ :param OUTPUT_NAME name: (optional) output name ++ :param NO_INSTALL: (optional) don't install ++ ++where exename is the name of the executable (e.g., "wave"). source1, ++source2, etc. are the source files used to build the executable, e.g., ++cpp.cpp. If no source files are provided, "exename.cpp" will be ++used. ++ ++This macro has a variety of options that affect its behavior. In ++several cases, we use the placeholder "feature" in the option name ++to indicate that there are actually several different kinds of ++options, each referring to a different build feature, e.g., shared ++libraries, multi-threaded, debug build, etc. For a complete listing ++of these features, please refer to the CMakeLists.txt file in the ++root of the Boost distribution, which defines the set of features ++that will be used to build Boost libraries by default. ++ ++The options that affect this macro's behavior are: ++ ++.. _COMPILE_FLAGS: ++.. index:: COMPILE_FLAGS ++ ++* **COMPILE_FLAGS** -- Provides additional compilation flags that will be ++ used when building the executable. ++ ++.. _feature_COMPILE_FLAGS: ++.. index:: feature_COMPILE_FLAGS ++ ++* **feature_COMPILE_FLAGS** -- Provides additional compilation flags that ++ will be used only when building the executable with the given ++ feature (e.g., ``SHARED_COMPILE_FLAGS`` when we're linking against ++ shared libraries). Note that the set of features used to build the ++ executable depends both on the arguments given to ++ boost_add_executable (see the "feature" argument description, below) ++ and on the user's choice of variants to build. ++ ++.. _LINK_FLAGS: ++.. index:: LINK_FLAGS ++ ++* **LINK_FLAGS** -- Provides additional flags that will be passed to the ++ linker when linking the executable. This option should not be used ++ to link in additional libraries; see ``LINK_LIBS`` and ``DEPENDS``. ++ ++.. _feature_LINK_FLAGS: ++.. index:: feature_LINK_FLAGS ++ ++* **feature_LINK_FLAGS** -- Provides additional flags that will be passed ++ to the linker when linking the executable with the given feature ++ (e.g., ``MULTI_THREADED_LINK_FLAGS`` when we're linking a multi-threaded ++ executable). ++ ++.. _LINK_LIBS: ++.. index:: LINK_LIBS ++ ++* **LINK_LIBS** -- Provides additional libraries against which the ++ executable will be linked. For example, one might provide "expat" as ++ options to ``LINK_LIBS``, to state that the executable will link against ++ the expat library binary. Use ``LINK_LIBS`` for libraries external to ++ Boost; for Boost libraries, use ``DEPENDS``. ++ ++.. _feature_LINK_LIBS: ++.. index:: feature_LINK_LIBS ++ ++* **feature_LINK_LIBS** -- Provides additional libraries to link against ++ when linking an executable built with the given feature. ++ ++.. _DEPENDS: ++.. index:: DEPENDS ++ ++* **DEPENDS** -- States that this executable depends on and links ++ against a Boost library. The arguments to ``DEPENDS`` should be the ++ unversioned name of the Boost library, such as ++ "boost_filesystem". Like ``LINK_LIBS``, this option states that the ++ executable will link against the stated libraries. Unlike ``LINK_LIBS``, ++ however, ``DEPENDS`` takes particular library variants into account, ++ always linking to the appropriate variant of a Boost library. For ++ example, if the ``MULTI_THREADED`` feature was requested in the call to ++ boost_add_executable, ``DEPENDS`` will ensure that we only link against ++ multi-threaded libraries. ++ ++.. _feature: ++.. index:: feature ++ ++* **feature** -- States that the executable should always be built using a ++ given feature, e.g., ``SHARED`` linking (against its libraries) or ++ ``MULTI_THREADED`` (for multi-threaded builds). If that feature has ++ been turned off by the user, the executable will not build. ++ ++.. _NO_INSTALL: ++.. index:: NO_INSTALL ++ ++* **NO_INSTALL** -- Don't install this executable with the rest of ++ Boost. ++ ++.. _OUTPUT_NAME: ++.. index:: OUTPUT_NAME ++ ++* **OUTPUT_NAME** -- If you want the executable to be generated ++ somewhere other than the binary directory, pass the path (including ++ directory and file name) via the ``OUTPUT_NAME`` parameter. ++ ++.. rubric:: Example ++ ++:: ++ ++ boost_add_executable(wave cpp.cpp ++ DEPENDS boost_wave boost_program_options ++ boost_filesystem ++ boost_serialization ++ ) ++ ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Core module in ++``tools/build/CMake/BoostCore.cmake`` ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,44 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++boost_additional_test_dependencies ++---------------------------------- ++ ++.. note:: This is only needed in the presence of 'modularization' ++ which is currently disabled. ++ ++Add additional include directories based on the dependencies of the ++library being tested 'libname' and all of its dependencies. ++ ++.. cmake:: boost_additional_test_dependencies(libname, ... ++ ++ :param libname: name of library being tested ++ :param BOOST_DEPENDS: libdepend1 libdepend2 ... ++ ++`libname` ++ ++ the name of the boost library being tested. (signals) ++ ++`BOOST_DEPENDS` ++ ++ The list of the extra boost libraries that the test suite will ++ depend on. You do NOT have to list those libraries already listed ++ by the module.cmake file as these will be used. ++ ++.. rubric:: Example ++ ++The following invocation of the `boost_additional_test_dependencies` ++macro is taken from the signals library. :: ++ ++ boost_additional_test_dependencies(signals BOOST_DEPENDS test optional) ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Testing module in ++tools/build/CMake/BoostTesting.cmake ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,200 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_add_library ++.. _boost_add_library_macro: ++ ++boost_add_library ++----------------- ++ ++This macro creates a new Boost library target that generates a compiled library ++(.a, .lib, .dll, .so, etc) from source files. This routine will ++actually build several different variants of the same library, with ++different compilation options, as determined by the set of "default" ++library variants. ++ ++.. cmake:: boost_add_library(libname source1 source2 ...) ++ ++ :param source1 source2 ...: relative paths to source files ++ :type COMPILE_FLAGS: optional ++ :param COMPILE_FLAGS: flags to pass when compiling all variants ++ :type feature_COMPILE_FLAGS: optional ++ :param feature_COMPILE_FLAGS: compile flags when *feature* is on ++ :type LINK_FLAGS: optional ++ :param LINK_FLAGS: link flags for all variants ++ :type feature_LINK_FLAGS: optional ++ :param feature_LINK_FLAGS: link flags for *feature* ++ :type LINK_LIBS: optional ++ :param LINK_LIBS: lib1 lib2 ... ++ :type feature_LINK_LIBS: optional ++ :param feature_LINK_LIBS: lib1 lib2 ... ++ :type DEPENDS: optional ++ :param DEPENDS: libdepend1 libdepend2 ... ++ :param STATIC_TAG: ++ :type MODULE: boolean ++ :param MODULE: ++ :type NOT_feature: boolean ++ :param NOT_feature: ++ :type EXTRA_VARIANTS: optional ++ :param EXTRA_VARIANTS: variant1 variant2 ... ++ ++where `libname` is the name of Boost library binary (e.g., ++"boost_regex") and `source1`, `source2`, etc. are the source files used ++to build the library, e.g., `cregex.cpp`. ++ ++This macro has a variety of options that affect its behavior. In ++several cases, we use the placeholder "feature" in the option name ++to indicate that there are actually several different kinds of ++options, each referring to a different build feature, e.g., shared ++libraries, multi-threaded, debug build, etc. For a complete listing ++of these features, see :ref:`variants`. ++ ++The options that affect this macro's behavior are: ++ ++.. index:: COMPILE_FLAGS ++ ++COMPILE_FLAGS ++^^^^^^^^^^^^^ ++ ++ Provides additional compilation flags that will be ++ used when building all variants of the library. For example, one ++ might want to add ``"-DBOOST_SIGNALS_NO_LIB=1"`` through this option ++ (which turns off auto-linking for the Signals library while ++ building it). ++ ++feature_COMPILE_FLAGS ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ Provides additional compilation flags that ++ will be used only when building variants of the library that ++ include the given feature. For example, ++ `MULTI_THREADED_COMPILE_FLAGS` are additional flags that will be ++ used when building a multi-threaded variant, while ++ `SHARED_COMPILE_FLAGS` will be used when building a shared library ++ (as opposed to a static library). ++ ++LINK_FLAGS ++^^^^^^^^^^ ++ ++ Provides additional flags that will be passed to the ++ linker when linking each variant of the library. This option ++ should not be used to link in additional libraries; see `LINK_LIBS` ++ and `DEPENDS`. ++ ++feature_LINK_FLAGS ++^^^^^^^^^^^^^^^^^^ ++ ++ Provides additional flags that will be passed ++ to the linker when building variants of the library that contain a ++ specific feature, e.g., `MULTI_THREADED_LINK_FLAGS`. This option ++ should not be used to link in additional libraries; see ++ feature_LINK_LIBS. ++ ++LINK_LIBS ++^^^^^^^^^ ++ ++ Provides additional libraries against which each of the ++ library variants will be linked. For example, one might provide ++ "expat" as options to LINK_LIBS, to state that each of the library ++ variants will link against the expat library binary. Use LINK_LIBS ++ for libraries external to Boost; for Boost libraries, use DEPENDS. ++ ++feature_LINK_LIBS ++^^^^^^^^^^^^^^^^^ ++ ++ Provides additional libraries for specific ++ variants of the library to link against. For example, ++ `MULTI_THREADED_LINK_LIBS` provides extra libraries to link into ++ multi-threaded variants of the library. ++ ++DEPENDS ++^^^^^^^ ++ ++ States that this Boost libraries depends on and links ++ against another Boost library. The arguments to `DEPENDS` should be ++ the unversioned name of the Boost library, such as ++ "boost_filesystem". Like `LINK_LIBS`, this option states that all ++ variants of the library being built will link against the stated ++ libraries. Unlike `LINK_LIBS`, however, `DEPENDS` takes particular ++ library variants into account, always linking the variant of one ++ Boost library against the same variant of the other Boost ++ library. For example, if the boost_mpi_python library `DEPENDS` on ++ boost_python, multi-threaded variants of boost_mpi_python will ++ link against multi-threaded variants of boost_python. ++ ++STATIC_TAG ++^^^^^^^^^^ ++ ++ States that the name of static library variants on ++ Unix need to be named differently from shared library ++ variants. This particular option should only be used in rare cases ++ where the static and shared library variants are incompatible, ++ such that linking against the shared library rather than the ++ static library will cause features. When this option is provided, ++ static libraries on Unix variants will have "-s" appended to their ++ names. *We hope that this is a temporary solution. At ++ present, it is only used by the Test library.* ++ ++MODULE ++^^^^^^ ++ ++ This option states that, when building a shared library, ++ the shared library should be built as a module rather than a ++ normal shared library. Modules have special meaning an behavior on ++ some platforms, such as Mac OS X. ++ ++NO_feature ++^^^^^^^^^^ ++ ++ States that library variants containing a particular ++ feature should not be built. For example, passing ++ `NO_SINGLE_THREADED` suppresses generation of single-threaded ++ variants of this library. ++ ++EXTRA_VARIANTS ++^^^^^^^^^^^^^^ ++ ++ Specifies that extra variants of this library ++ should be built, based on the features listed. Each "variant" is a ++ colon-separated list of features. For example, passing ++ EXTRA_VARIANTS "PYTHON_NODEBUG:PYTHON_DEBUG" ++ will result in the creation of an extra set of library variants, ++ some with the `PYTHON_NODEBUG` feature and some with the ++ `PYTHON_DEBUG` feature. ++ ++.. rubric:: Example ++ ++The Boost.Thread library binary is built using the following ++invocation of the `boost_add_library` macro. The options passed to the ++macro indicate that CMake should define `BOOST_THREAD_BUILD_DLL` to 1 ++when building shared libraries and `BOOST_THREAD_BUILD_LIB` to 1 when ++building static libraries. The `NO_SINGLE_THREADED` option inhibits ++creation of any single-threaded variants of the library (which ++obviously would not make sense for a threading library!). The flags ++needed to compile the multi-threaded variants are automatically ++added. :: ++ ++ boost_add_library( ++ boost_thread ++ barrier.cpp condition.cpp exceptions.cpp mutex.cpp once.cpp ++ recursive_mutex.cpp thread.cpp tss_hooks.cpp tss_dll.cpp tss_pe.cpp ++ tss.cpp xtime.cpp ++ SHARED_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_DLL=1" ++ STATIC_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_LIB=1" ++ NO_SINGLE_THREADED ++ ) ++ ++ ++This example is from ``libs/thread/src/CMakeLists.txt``. ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Core module in ++``tools/build/CMake/BoostCore.cmake``. ++ ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,103 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_library_project ++.. _boost_library_project_macro: ++ ++boost_library_project ++--------------------- ++ ++Define a boost library project. ++ ++.. cmake:: boost_library_project(libname[, ...]) ++ ++ :param libname: name of library to add ++ :type SRCDIRS: optional ++ :param SRCDIRS: srcdir1 srcdir2 ... ++ :type TESTDIRS: optional ++ :param TESTDIRS: testdir1 testdir2 .. ++ :type EXAMPLEDIRS: optional ++ :param EXAMPLEDIRS: testdir1 testdir2 .. ++ :param DESCRIPTION: description ++ :param AUTHORS: author1 author2 ++ :param MAINTAINERS: maint maint2 ++ :type MODULAR: optional ++ :param MODULAR: ++ ++where `libname` is the name of the library (e.g., Python, ++Filesystem), `srcdir1`, `srcdir2`, etc, are subdirectories containing ++library sources (for Boost libraries that build actual library ++binaries), and `testdir1`, `testdir2`, etc, are subdirectories ++containing regression tests. ++ ++.. A library marked MODULAR has all of its header files in its own ++.. subdirectory include/boost rather than the "global" boost ++.. subdirectory. These libraries can be added or removed from the tree ++.. freely; they do not need to be a part of the main repository. ++ ++`DESCRIPTION` provides a brief description of the library, which can ++be used to summarize the behavior of the library for a user. `AUTHORS` ++lists the authors of the library, while `MAINTAINERS` lists the active ++maintainers. If `MAINTAINERS` is left empty, it is assumed that the ++authors are still maintaining the library. Both authors and maintainers ++should have their name followed by their current e-mail address in ++angle brackets, with -at- instead of the at sign, e.g., :: ++ ++ Douglas Gregor ++ ++.. index:: TESTDIRS ++.. _TESTDIRS: ++ ++TESTDIRS ++^^^^^^^^ ++ ++For libraries that have regression tests, and when testing is enabled ++either by `BUILD_TESTS` containing the (lowercase) name of this ++library or the string ``ALL``, the generated makefiles/project files ++will contain regression tests for this library. ++ ++.. index:: EXAMPLEDIRS ++.. _EXAMPLEDIRS: ++ ++EXAMPLEDIRS ++^^^^^^^^^^^ ++ ++This option specifies directories containing examples. Examples are ++just libraries/executables created with :ref:`boost_add_library_macro` ++and :ref:`boost_add_executable_macro`, except they are only built if ++the name of the current project is specified in :ref:`BUILD_EXAMPLES`. ++ ++.. index:: MODULAR ++.. _MODULAR: ++ ++MODULAR ++^^^^^^^ ++ ++Currently unused. ++ ++.. rubric:: Example ++ ++The Boost.Thread library uses the following invocation of the ++`boost_library_project` macro, since it has both a compiled library ++(built in the "src" subdirectory) and regression tests (listed in the ++"test" subdirectory):: ++ ++ ++ boost_library_project( ++ Thread ++ SRCDIRS src ++ TESTDIRS test ++ DESCRIPTION "Portable threading" ++ AUTHORS "Anthony Williams ++ ) ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Core module in ++``tools/build/CMake/BoostCore.cmake`` ++ +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_module ++.. _boost_module: ++ ++boost_module ++------------ ++ ++FIXME +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_python_module ++.. _boost_python_module: ++ ++boost_python_module ++------------------- ++ ++FIXME +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,14 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _boost_test_compile_fail: ++ ++boost_test_compile_fail ++----------------------- ++ ++FIXME +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,14 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _boost_test_compile: ++ ++boost_test_compile ++------------------ ++ ++FIXME +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_test_run_fail ++.. _boost_test_run_fail: ++ ++boost_test_run_fail ++------------------- ++ ++FIXME +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. index:: boost_test_run ++.. _boost_test_run: ++ ++boost_test_run ++-------------- ++ ++FIXME +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_sources/testing.txt boost-cmake/tools/build/CMake/docs/build/html/_sources/testing.txt +--- boost-cmake/tools/build/CMake/docs/build/html/_sources/testing.txt 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_sources/testing.txt 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,438 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. 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 ++.. ++ ++.. _testing: ++ ++Testing ++======= ++ ++Boost's CMake-based build system provides regression testing via ++`CTest `_, which ++comes as part of CMake. This regression testing system can be used by ++Boost developers to test their libraries locally and also by testers ++and users to submit regression tests to a `CDash server ++`_, which ++collects and reports regression-testing results from different ++sites. This document assumes that the reader has already learned how ++to build and configure Boost using CMake. ++ ++.. index:: BUILD_TESTS ++.. _BUILD_TESTS: ++ ++BUILD_TESTS ++----------- ++ ++The variable BUILD_TESTS is a comma-separated list of projects for ++which testing will be enabled, e.g.:: ++ ++ "accumulators;iostreams;variant" ++ ++or the string ``"ALL"`` for all projects, or the string ++``"NONE"`` to disable testing. ++ ++.. warning:: if you pass this list from a unix shell, don't forget to ++ enclose the whole thing in quotes or escape the ++ semicolons. ++ ++If you re-run the CMake configuration for Boost with ``BUILD_TESTS`` ++set to ``ALL``, you will notice that configuration takes significantly ++longer when we are building all of the regression tests. This is due ++to the very large number of toplevel targets (thousands) that are ++created. Until boost's testing scheme is reorganized to reduce this ++number, we anticipate that only testing nodes will want to test ALL, ++whereas developers will want to test the library under development and ++those that are dependent on it. ++ ++.. index:: NMake ++.. index:: Visual Studio ++.. index:: tests, running all of them ++ ++.. warning:: It is **not** recommended to set ``BUILD_TESTS`` to ++ ``"ALL"`` when using Visual Studio generators. A very ++ large number (thousands) of targets are generated and ++ this can bring VS to grinding halt. To run all tests, ++ choose the ``NMake`` generator, see :ref:`NMake`. ++ ++Be sure to re-configure CMake once you are done tweaking these ++options, and generate makefiles or project files, as mentioned in ++:ref:`quickstart`. ++ ++If you're using a command-line configuration (nmake files, unix ++makefiles) you can simplify this process by passing the value of ++``BUILD_TESTS`` on the command line, e.g. :: ++ ++ cmake ../src -DBUILD_TESTS="mpi;graph_parallel" ++ ++.. note:: In Visual Studio, you should be prompted by the gui to ++ reload the project. If you're unlucky, you will be prompted a ++ thousand times to reload each individual solution. For this ++ reason, our current best recommendataion is to close and reopen the ++ project if you rebuild ``Boost.sln``. ++ ++ ++Build ++----- ++ ++Follow the same building process described in :ref:`quickstart`. For ++Unix users, don't forget the `-i` option to `make` (ignore errors), ++and also possibly `-j 2` (or more) to run the build process in ++parallel. Building all of the regression tests for the Boost libraries ++can take a long time. :: ++ ++ make -j2 -i ++ ++.. note:: If you change Boost source files in a way that affects your ++ tests, you will need to rebuild to update the libraries and ++ test executables before moving on to the next step. ++ ++Test ++---- ++ ++Once regression tests have finished building, ++ ++Unix and nmake ++^^^^^^^^^^^^^^ ++ ++at a command prompt, ``cd`` to the Boost binary directory. Then, run ++the command:: ++ ++ ctest ++ ++to execute all of the regression tests. The `ctest` executable comes ++with cmake. On Unix platforms, this is the same place where `ccmake` ++resides. On Windows platforms, it will be in ``C:\Program ++Files\CMake X.Y\bin``. The ctest program should produce output like the ++following:: ++ ++ Start processing tests ++ Test project /Users/dgregor/Projects/boost-darwin ++ 1/ 22 Testing any-any_test Passed ++ 2/ 22 Testing any-any_to_ref_test Passed ++ 3/ 22 Testing function-lib_function_test Passed ++ 4/ 22 Testing function-function_n_test Passed ++ 5/ 22 Testing function-allocator_test Passed ++ 6/ 22 Testing function-stateless_test Passed ++ 7/ 22 Testing function-lambda_test Passed ++ 8/ 22 Testing function-function_test_fail1 ***Failed - supposed to fail ++ 9/ 22 Testing function-function_test_fail2 ***Failed - supposed to fail ++ 10/ 22 Testing function-function_30 Passed ++ 11/ 22 Testing function-function_arith_cxx98 Passed ++ 12/ 22 Testing function-function_arith_porta Passed ++ 13/ 22 Testing function-sum_avg_cxx98 Passed ++ 14/ 22 Testing function-sum_avg_portable Passed ++ 15/ 22 Testing function-mem_fun_cxx98 Passed ++ 16/ 22 Testing function-mem_fun_portable Passed ++ 17/ 22 Testing function-std_bind_cxx98 Passed ++ 18/ 22 Testing function-std_bind_portable Passed ++ 19/ 22 Testing function-function_ref_cxx98 Passed ++ 20/ 22 Testing function-function_ref_portabl Passed ++ 21/ 22 Testing function-contains_test Passed ++ 22/ 22 Testing function-contains2_test Passed ++ ++ 100% tests passed, 0 tests failed out of 22 ++ ++Here, we have only enabled testing of the Boost.Any and Boost.Function ++libraries, by setting `BUILD_TESTS` to `any;function`. ++ ++.. warning:: Again, This ``ctest`` step runs the tests without first ++ running a build. If you change a source file and run the ++ ``ctest`` step you will see that no build is invoked. ++ ++To run just a subset of the tests, pass ``-R`` and a regular ++expression to ``ctest`` (see the output of ``ctest --help-full``). For ++example, to run all of the Python tests, use:: ++ ++ ctest -R python ++ ++There is also a ``-E`` (exclude) option which does the inverse of ``-R``. ++``ctest --help`` shows the full list of options. ++ ++.. index:: targets ; testing ++.. index:: testing ; targets ++ ++Visual Studio ++^^^^^^^^^^^^^ ++ ++You will see a solution named ``RUN_TESTS``. Build this to run the ++tests. If you want to run them from the commandline, for some ++projects you will have to use the ``-C`` flag to ctest to specify the ++ctest configuration type (Debug or Release, typically). ++ ++ ++Targets ++------- ++ ++The testing subsystem adds toplevel targets to the build. On unix you ++can see them in the output of ``make help``. For example some of the ++accumulators test targets look like this:: ++ ++ % make help | grep accum ++ ... accumulators-tests-count ++ ... accumulators-tests-covariance ++ ... accumulators-tests-droppable ++ ... accumulators-tests-error_of ++ ... accumulators-tests-extended_p_square ++ ... accumulators-tests-extended_p_square_quantile ++ ++Note that they are prefixed with the name of the project, a dash, and ++'tests'. Under visual studio you will see these targets in the ++'solution explorer'. ++ ++.. _the_dashboard: ++ ++The Dashboard ++------------- ++ ++Donated by kitware, it is here: ++ ++http://www.cdash.org/CDashPublic/index.php?project=Boost ++ ++Submitting Results ++------------------ ++ ++.. warning:: This needs updating for git ++ ++The ``ctest`` command can be used by individual developers to test ++local changes to their libraries. The same program can also be used to ++build all of Boost, run its regression tests, and submit the results ++to a central server where others can view them. Currently, regression ++test results based on the CMake build system are displayed on the Dart ++server at http://www.cdash.org/CDashPublic/index.php?project=Boost. ++ ++To submit "experimental" results to the Dart server, configure a Boost ++binary tree by following the configuration instructions in the section ++:ref:`quickstart`, and then enable regression testing via the ++`BOOST_TESTS=ALL` option, as described above. At this point, don't build ++anything! We'll let CTest do that work. You may want to customize some ++of the advanced CMake options, such as `SITE` (to give your site ++name), and `MAKECOMMAND` (which, for makefile targets, governs the ++top-level make call when building Boost). Finally, go into the Boost ++binary directory and execute:: ++ ++ ctest -D Experimental ++ ++CTest will then reconfigure Boost, build all of the Boost libraries ++and regression tests, execute the regression tests, and submit the ++results to the Dart dashboard at ++http://www.cdash.org/CDashPublic/index.php?project=Boost. Results ++submitted to the dashboard are usually browsable momentarily within a ++minute or two. ++ ++Automatic testing ++----------------- ++ ++Continuous ++^^^^^^^^^^ ++ ++Here is a recommended setup. ++ ++Create a directory ``ctest`` on your test drone containing ++subdirectories for the branches you'll be testing, in this case ++*release* and *trunk*. :: ++ ++ boost/ ++ ctest/ ++ branches/ ++ release/ ++ continuous/ ++ build/ <= run ctest here ++ src/ <= checkout to here ++ nightly/ ++ build/ <= run ctest here ++ src/ <= checkout to here ++ ++and check out source to the directories listed above. We'll do the ++release branch as an example:: ++ ++ % cd boost/ctest/branches/release ++ % svn co http://svn.boost.org/svn/boost/branches/release src ++ # ++ # lots of output ++ # ++ % mkdir continuous ++ % cd continuous ++ ++now configure your build, enabling testing. In this case I'll also ++use an alternate compiler, from Intel:: ++ ++ % cmake ../src -DBUILD_TESTING=ON -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc ++ -- The C compiler identification is Intel ++ -- The CXX compiler identification is Intel ++ -- Check for working C compiler: /opt/intel/Compiler/11.0/083/bin/intel64/icc ++ -- Check for working C compiler: /opt/intel/Compiler/11.0/083/bin/intel64/icc -- works ++ ++ (etc) ++ ++ -- Configuring done ++ -- Generating done ++ -- Build files have been written to: /home/troy/Projects/boost/ctest/release/continuous/build ++ ++Now run ``ctest -D Continuous`` in a loop:: ++ ++ % while true ++ while> do ++ while> ctest -D Continuous ++ while> sleep 600 # take it easy on the repository ++ while> done ++ Site: zinc ++ Build name: intel-11.0-linux ++ Create new tag: 20090514-2207 - Continuous ++ Start processing tests ++ Updating the repository ++ Updating the repository: /home/troy/Projects/boost/ctest/release/nightly/src ++ Use SVN repository type ++ Old revision of repository is: 53002 ++ New revision of repository is: 53005 ++ Gathering version information (one . per revision): ++ ++ (etc) ++ ++If you add ``-V or -VV`` you'll get a little more feedback about what ++is going on. On unix it is handy to do this via the utility *screen*. ++ ++.. todo:: Figure out how to do this on windows, encapsulate some of ++ this scripting. Just use the ctest builtin scripting ++ language. ++ ++ ++Nightly ++^^^^^^^ ++ ++Nightly testing should run triggered by a cron job or by Windows Task ++Scheduler or what-have-you. You will need, ++ ++* a directory to work in ++* installed cmake/ctest/svn ++ ++but not a checkout of boost. CTest will do the checkout, build, test ++and submit on its own. ++ ++Create a directory to run in. As in the previous section, we'll use ++``boost/ctest/branches/release/nightly``, which I'll call ``$DIR``. ++The CTest script should look like the following (you can copy/paste ++this into ``$DIR/CTestNightly.cmake`` :: ++ ++ execute_process(COMMAND /bin/pwd ++ OUTPUT_VARIABLE PWD ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ message(STATUS "Running nightly build in ${PWD}") ++ ++ set(CTEST_SOURCE_DIRECTORY ${PWD}/src) ++ set(CTEST_BINARY_DIRECTORY ${PWD}/build) ++ ++ # what cmake command to use for configuring this dashboard ++ set(CTEST_CMAKE_COMMAND "/usr/local/bin/cmake") ++ set(CTEST_CTEST_COMMAND "/usr/local/bin/ctest") ++ set(CTEST_CVS_COMMAND "svn") ++ ++ set(CTEST_CVS_CHECKOUT "${CTEST_CVS_COMMAND} co https://svn.boost.org/svn/boost/branches/release ${CTEST_SOURCE_DIRECTORY}") ++ ++ # which ctest command to use for running the dashboard ++ set(CTEST_COMMAND ++ "${CTEST_CTEST_COMMAND} -VV -D Experimental -A ${PWD}/notes.txt -O ctest.log" ++ ) ++ ++ ++ ++ #################################################################### ++ # The values in this section are optional you can either ++ # have them or leave them commented out ++ #################################################################### ++ ++ # should ctest wipe the binary tree before running ++ set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE) ++ ++ # ++ # this is the initial cache to use for the binary tree, be careful to escape ++ # any quotes inside of this string if you use it ++ # ++ # Yes you can pass cmake -DBUILD_WHATEVER=ON type options here. ++ # ++ set(CTEST_INITIAL_CACHE " ++ ++ CMAKE_CXX_COMPILER:STRING=/opt/intel/Compiler/11.0/083/bin/intel64/icpc ++ CMAKE_C_COMPILER:STRING=/opt/intel/Compiler/11.0/083/bin/intel64/icc ++ ++ SITE:STRING=zinc ++ MAKECOMMAND:STRING=make -i -j2 ++ DART_TESTING_TIMEOUT:STRING=30 ++ BUILD_TESTS:STRING=ALL ++ BUILD_EXAMPLES:STRING=ALL ++ CVSCOMMAND:FILEPATH=${CTEST_CVS_COMMAND} ++ ") ++ ++You will need to customize several variables: ++ ++* **CTEST_CMAKE_COMMAND** the path to your cmake binary ++* **CTEST_CTEST_COMMAND** the path to your ctest binary (should be in ++ the same place as cmake) ++* **CTEST_CVS_COMMAND** The path to subversion. ++* **CMAKE_CXX_COMPILER:STRING**, **CMAKE_C_COMPILER:STRING** Note the ++ syntax here, the trailing ``:STRING``. If you are using a ++ nonstandard compiler, set it here. ++* **MAKECOMMAND:STRING** The path to your make command. *NOTE* if you ++ set this, be sure that the ``-i`` (ignore-errors) flag is included. ++ If it isn't, the first compile/link error will stop the build and ++ testing will commence. ++* **SITE:STRING** This is what will appear as the 'hostname' in your ++ posted dashboards. Customize as you like. ++ ++Now you'll create a "notes" file, call it ``notes.txt``. This will be ++visible from the dashboard. Add the output of, e.g:: ++ ++ gcc --version ++ uname -a ++ ++and the contents of the ``CTestNightly.cmake`` itself. Example:: ++ ++ **************** CMAKE DASHBOARD NOTES ***************** ++ ++ Notes file for CMake Nightly Dashboard. ++ ++ This dashboard is being generated on an eight core, 64 bit ++ Ubuntu 9.04 machine with an intel c++ compiler. ++ ++ ++ Questions about this Dashboard should be directed to troy@resophonic.com ++ ++ Linux zinc 2.6.27-11-generic #1 SMP Wed Apr 1 20:53:41 UTC 2009 x86_64 GNU/Linux ++ ++ icpc (ICC) 11.0 20090318 ++ Copyright (C) 1985-2009 Intel Corporation. All rights reserved. ++ ++ --------------- Script file --------------- ++ ++ (contents of CTestNightly.cmake) ++ ++Now run (as a cronjob or at the command line):: ++ ++ ctest -S CTestNightly.cmake ++ ++if you want extra verbosity add a ``-VV`` flag. You'll see something like the following:: ++ ++ + /opt/local/bin/ctest -VV -S CMakeDashBoard.cmake ++ * Extra verbosity turned on ++ Reading Script: /Users/troy/ctest/boost/release/nightly/CMakeDashBoard.cmake ++ Run cmake command: /opt/i3/ports/bin/cmake "/Users/troy/ctest/boost/release/nightly/src" ++ -- The C compiler identification is GNU ++ -- The CXX compiler identification is GNU ++ -- Check for working C compiler: /usr/bin/gcc ++ (etc) ++ -- Configuring done ++ -- Generating done ++ -- Build files have been written to: /Users/troy/ctest/boost/release/nightly/build ++ Run ctest command: /opt/i3/ports/bin/ctest -VV -D Nightly -A /Users/troy/ctest/boost/release/nightly/notes.txt -O ctest.log ++ UpdateCTestConfiguration from :/Users/troy/ctest/boost/release/nightly/build/DartConfiguration.tcl ++ Parse Config file:/Users/troy/ctest/boost/release/nightly/build/DartConfiguration.tcl ++ Site: silver ++ Build name: gcc-4.0.1-macos ++ (etc, etc) ++ ++You'll see it configure again, run... and sooner or later you'll see ++your results on :ref:`the_dashboard`. +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_static/alt.boost.png и boost-cmake/tools/build/CMake/docs/build/html/_static/alt.boost.png различаются +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_static/basic.css boost-cmake/tools/build/CMake/docs/build/html/_static/basic.css +--- boost-cmake/tools/build/CMake/docs/build/html/_static/basic.css 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_static/basic.css 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,405 @@ ++/** ++ * Sphinx stylesheet -- basic theme ++ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ */ ++ ++/* -- main layout ----------------------------------------------------------- */ ++ ++div.clearer { ++ clear: both; ++} ++ ++/* -- relbar ---------------------------------------------------------------- */ ++ ++div.related { ++ width: 100%; ++ font-size: 90%; ++} ++ ++div.related h3 { ++ display: none; ++} ++ ++div.related ul { ++ margin: 0; ++ padding: 0 0 0 10px; ++ list-style: none; ++} ++ ++div.related li { ++ display: inline; ++} ++ ++div.related li.right { ++ float: right; ++ margin-right: 5px; ++} ++ ++/* -- sidebar --------------------------------------------------------------- */ ++ ++div.sphinxsidebarwrapper { ++ padding: 10px 5px 0 10px; ++} ++ ++div.sphinxsidebar { ++ float: left; ++ width: 230px; ++ margin-left: -100%; ++ font-size: 90%; ++} ++ ++div.sphinxsidebar ul { ++ list-style: none; ++} ++ ++div.sphinxsidebar ul ul, ++div.sphinxsidebar ul.want-points { ++ margin-left: 20px; ++ list-style: square; ++} ++ ++div.sphinxsidebar ul ul { ++ margin-top: 0; ++ margin-bottom: 0; ++} ++ ++div.sphinxsidebar form { ++ margin-top: 10px; ++} ++ ++div.sphinxsidebar input { ++ border: 1px solid #98dbcc; ++ font-family: sans-serif; ++ font-size: 1em; ++} ++ ++img { ++ border: 0; ++} ++ ++/* -- search page ----------------------------------------------------------- */ ++ ++ul.search { ++ margin: 10px 0 0 20px; ++ padding: 0; ++} ++ ++ul.search li { ++ padding: 5px 0 5px 20px; ++ background-image: url(file.png); ++ background-repeat: no-repeat; ++ background-position: 0 7px; ++} ++ ++ul.search li a { ++ font-weight: bold; ++} ++ ++ul.search li div.context { ++ color: #888; ++ margin: 2px 0 0 30px; ++ text-align: left; ++} ++ ++ul.keywordmatches li.goodmatch a { ++ font-weight: bold; ++} ++ ++/* -- index page ------------------------------------------------------------ */ ++ ++table.contentstable { ++ width: 90%; ++} ++ ++table.contentstable p.biglink { ++ line-height: 150%; ++} ++ ++a.biglink { ++ font-size: 1.3em; ++} ++ ++span.linkdescr { ++ font-style: italic; ++ padding-top: 5px; ++ font-size: 90%; ++} ++ ++/* -- general index --------------------------------------------------------- */ ++ ++table.indextable td { ++ text-align: left; ++ vertical-align: top; ++} ++ ++table.indextable dl, table.indextable dd { ++ margin-top: 0; ++ margin-bottom: 0; ++} ++ ++table.indextable tr.pcap { ++ height: 10px; ++} ++ ++table.indextable tr.cap { ++ margin-top: 10px; ++ background-color: #f2f2f2; ++} ++ ++img.toggler { ++ margin-right: 3px; ++ margin-top: 3px; ++ cursor: pointer; ++} ++ ++/* -- general body styles --------------------------------------------------- */ ++ ++a.headerlink { ++ visibility: hidden; ++} ++ ++h1:hover > a.headerlink, ++h2:hover > a.headerlink, ++h3:hover > a.headerlink, ++h4:hover > a.headerlink, ++h5:hover > a.headerlink, ++h6:hover > a.headerlink, ++dt:hover > a.headerlink { ++ visibility: visible; ++} ++ ++div.body p.caption { ++ text-align: inherit; ++} ++ ++div.body td { ++ text-align: left; ++} ++ ++.field-list ul { ++ padding-left: 1em; ++} ++ ++.first { ++ margin-top: 0 !important; ++} ++ ++p.rubric { ++ margin-top: 30px; ++ font-weight: bold; ++} ++ ++/* -- sidebars -------------------------------------------------------------- */ ++ ++div.sidebar { ++ margin: 0 0 0.5em 1em; ++ border: 1px solid #ddb; ++ padding: 7px 7px 0 7px; ++ background-color: #ffe; ++ width: 40%; ++ float: right; ++} ++ ++p.sidebar-title { ++ font-weight: bold; ++} ++ ++/* -- topics ---------------------------------------------------------------- */ ++ ++div.topic { ++ border: 1px solid #ccc; ++ padding: 7px 7px 0 7px; ++ margin: 10px 0 10px 0; ++} ++ ++p.topic-title { ++ font-size: 1.1em; ++ font-weight: bold; ++ margin-top: 10px; ++} ++ ++/* -- admonitions ----------------------------------------------------------- */ ++ ++div.admonition { ++ margin-top: 10px; ++ margin-bottom: 10px; ++ padding: 7px; ++} ++ ++div.admonition dt { ++ font-weight: bold; ++} ++ ++div.admonition dl { ++ margin-bottom: 0; ++} ++ ++p.admonition-title { ++ margin: 0px 10px 5px 0px; ++ font-weight: bold; ++} ++ ++div.body p.centered { ++ text-align: center; ++ margin-top: 25px; ++} ++ ++/* -- tables ---------------------------------------------------------------- */ ++ ++table.docutils { ++ border: 0; ++ border-collapse: collapse; ++} ++ ++table.docutils td, table.docutils th { ++ padding: 1px 8px 1px 0; ++ border-top: 0; ++ border-left: 0; ++ border-right: 0; ++ border-bottom: 1px solid #aaa; ++} ++ ++table.field-list td, table.field-list th { ++ border: 0 !important; ++} ++ ++table.footnote td, table.footnote th { ++ border: 0 !important; ++} ++ ++th { ++ text-align: left; ++ padding-right: 5px; ++} ++ ++/* -- other body styles ----------------------------------------------------- */ ++ ++dl { ++ margin-bottom: 15px; ++} ++ ++dd p { ++ margin-top: 0px; ++} ++ ++dd ul, dd table { ++ margin-bottom: 10px; ++} ++ ++dd { ++ margin-top: 3px; ++ margin-bottom: 10px; ++ margin-left: 30px; ++} ++ ++dt:target, .highlight { ++ background-color: #fbe54e; ++} ++ ++dl.glossary dt { ++ font-weight: bold; ++ font-size: 1.1em; ++} ++ ++.field-list ul { ++ margin: 0; ++ padding-left: 1em; ++} ++ ++.field-list p { ++ margin: 0; ++} ++ ++.refcount { ++ color: #060; ++} ++ ++.optional { ++ font-size: 1.3em; ++} ++ ++.versionmodified { ++ font-style: italic; ++} ++ ++.system-message { ++ background-color: #fda; ++ padding: 5px; ++ border: 3px solid red; ++} ++ ++.footnote:target { ++ background-color: #ffa ++} ++ ++/* -- code displays --------------------------------------------------------- */ ++ ++pre { ++ overflow: auto; ++} ++ ++td.linenos pre { ++ padding: 5px 0px; ++ border: 0; ++ background-color: transparent; ++ color: #aaa; ++} ++ ++table.highlighttable { ++ margin-left: 0.5em; ++} ++ ++table.highlighttable td { ++ padding: 0 0.5em 0 0.5em; ++} ++ ++tt.descname { ++ background-color: transparent; ++ font-weight: bold; ++ font-size: 1.2em; ++} ++ ++tt.descclassname { ++ background-color: transparent; ++} ++ ++tt.xref, a tt { ++ background-color: transparent; ++ font-weight: bold; ++} ++ ++h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { ++ background-color: transparent; ++} ++ ++/* -- math display ---------------------------------------------------------- */ ++ ++img.math { ++ vertical-align: middle; ++} ++ ++div.math p { ++ text-align: center; ++} ++ ++span.eqno { ++ float: right; ++} ++ ++/* -- printout stylesheet --------------------------------------------------- */ ++ ++@media print { ++ div.document, ++ div.documentwrapper, ++ div.bodywrapper { ++ margin: 0; ++ width: 100%; ++ } ++ ++ div.sphinxsidebar, ++ div.related, ++ div.footer, ++ #top-link { ++ display: none; ++ } ++} +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_static/boost.css boost-cmake/tools/build/CMake/docs/build/html/_static/boost.css +--- boost-cmake/tools/build/CMake/docs/build/html/_static/boost.css 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_static/boost.css 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,221 @@ ++/** ++ * Sphinx stylesheet -- default theme ++ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ */ ++ ++@import url("basic.css"); ++ ++/* -- page layout ----------------------------------------------------------- */ ++ ++body { ++ font-family: sans-serif; ++ font-size: 100%; ++ background-color: #ffffff; ++ color: #000; ++ margin: 0; ++ padding: 0; ++} ++ ++div.documentwrapper { ++ background-color: #ffffff; ++ border-top: 1px solid #dddddd; ++ border-bottom: 1px solid #dddddd; ++} ++ ++div.body { ++ background-color: #ffffff; ++ color: #000000; ++ padding: 0 20px 30px 20px; ++ border-left: 1px solid #eeeeee; ++} ++ ++div.footer { ++ color: #ffffff; ++ width: 100%; ++ padding: 9px 0 9px 0; ++ text-align: center; ++ font-size: 75%; ++} ++ ++div.footer a { ++ color: #ffffff; ++ text-decoration: underline; ++} ++ ++div.related { ++ background-color: #ffffff; ++ line-height: 30px; ++ color: #ffffff; ++} ++ ++div.related a { ++ color: #005a9c; ++} ++ ++div.sphinxsidebar { ++ float: right; ++} ++ ++div.sphinxsidebar h3 { ++ font-family: 'Trebuchet MS', sans-serif; ++ color: #666666; ++ font-size: 1.4em; ++ font-weight: normal; ++ margin: 0; ++ padding: 0; ++} ++ ++div.sphinxsidebar h3 a { ++ color: #005a9c; ++} ++ ++div.sphinxsidebar h4 { ++ font-family: 'Trebuchet MS', sans-serif; ++ color: #ffffff; ++ font-size: 1.3em; ++ font-weight: normal; ++ margin: 5px 0 0 0; ++ padding: 0; ++} ++ ++div.sphinxsidebar p { ++ color: #666666; ++} ++ ++div.sphinxsidebar p.topless { ++ margin: 5px 10px 10px 10px; ++} ++ ++div.sphinxsidebar ul { ++ margin: 10px; ++ padding: 0; ++ color: #ffffff; ++} ++ ++div.sphinxsidebar a { ++ color: #005a9c; ++} ++ ++div.sphinxsidebar input { ++ border: 1px solid #cccccc; ++ font-family: sans-serif; ++ font-size: 1em; ++} ++ ++/* -- body styles ----------------------------------------------------------- */ ++ ++a { ++ color: #355f7c; ++ text-decoration: none; ++} ++ ++a:hover { ++ text-decoration: underline; ++} ++ ++div.body p, div.body dd, div.body li { ++ text-align: justify; ++ line-height: 130%; ++} ++ ++div.body h1, ++div.body h2, ++div.body h3, ++div.body h4, ++div.body h5, ++div.body h6 { ++ background-color: #f5f5f5; ++ border-top: 1px solid #dddddd; ++ padding: 3px 0px 3px 10px; ++ margin: 20px -20px 10px -20px; ++ ++/* ++ font-family: 'Trebuchet MS', sans-serif; ++ background-color: #f2f2f2; ++ font-weight: normal; ++ color: #20435c; ++ border-bottom: 1px solid #ccc; ++ padding: 3px 0 3px 10px; ++*/ ++} ++ ++ ++div.body h1 { margin-top: 0; font-size: 150%; } ++div.body h2 { font-size: 140%; } ++div.body h3 { font-size: 130%; } ++div.body h4 { font-size: 120%; } ++div.body h5 { font-size: 110%; } ++div.body h6 { font-size: 100%; } ++ ++ ++a.headerlink { ++ color: #c60f0f; ++ font-size: 0.8em; ++ padding: 0 4px 0 4px; ++ text-decoration: none; ++} ++ ++a.headerlink:hover { ++ background-color: #c60f0f; ++ color: white; ++} ++ ++div.body p, div.body dd, div.body li { ++ text-align: justify; ++ line-height: 130%; ++} ++ ++div.admonition p.admonition-title + p { ++ display: inline; ++} ++ ++div.note { ++ background-color: #eee; ++ border: 1px solid #ccc; ++} ++ ++div.seealso { ++ background-color: #ffc; ++ border: 1px solid #ff6; ++} ++ ++div.topic { ++ background-color: #eee; ++} ++ ++div.warning { ++ background-color: #ffe4e4; ++ border: 1px solid #f66; ++} ++ ++p.admonition-title { ++ display: inline; ++} ++ ++p.admonition-title:after { ++ content: ":"; ++} ++ ++pre { ++ font-size: 9pt; ++ display: block; ++ margin: 1pc 4% 0pc 4%; ++ padding: 0.5pc 0.5pc 0.5pc 0.5pc; ++ border: 1px solid #d8d8d8; ++} ++ ++tt { ++ background-color: #ecf0f3; ++ padding: 0 1px 0 1px; ++ font-size: 0.95em; ++} ++ ++dt:target, .highlight { ++ background-color: #ffffff; ++ border-bottom: none; ++/* */ ++} ++ ++.k { ++ color: #0000aa; ++} +\ В конце файла нет новой строки +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_static/contents.png и boost-cmake/tools/build/CMake/docs/build/html/_static/contents.png различаются +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_static/doctools.js boost-cmake/tools/build/CMake/docs/build/html/_static/doctools.js +--- boost-cmake/tools/build/CMake/docs/build/html/_static/doctools.js 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_static/doctools.js 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,232 @@ ++/// XXX: make it cross browser ++ ++/** ++ * make the code below compatible with browsers without ++ * an installed firebug like debugger ++ */ ++if (!window.console || !console.firebug) { ++ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", ++ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; ++ window.console = {}; ++ for (var i = 0; i < names.length; ++i) ++ window.console[names[i]] = function() {} ++} ++ ++/** ++ * small helper function to urldecode strings ++ */ ++jQuery.urldecode = function(x) { ++ return decodeURIComponent(x).replace(/\+/g, ' '); ++} ++ ++/** ++ * small helper function to urlencode strings ++ */ ++jQuery.urlencode = encodeURIComponent; ++ ++/** ++ * This function returns the parsed url parameters of the ++ * current request. Multiple values per key are supported, ++ * it will always return arrays of strings for the value parts. ++ */ ++jQuery.getQueryParameters = function(s) { ++ if (typeof s == 'undefined') ++ s = document.location.search; ++ var parts = s.substr(s.indexOf('?') + 1).split('&'); ++ var result = {}; ++ for (var i = 0; i < parts.length; i++) { ++ var tmp = parts[i].split('=', 2); ++ var key = jQuery.urldecode(tmp[0]); ++ var value = jQuery.urldecode(tmp[1]); ++ if (key in result) ++ result[key].push(value); ++ else ++ result[key] = [value]; ++ } ++ return result; ++} ++ ++/** ++ * small function to check if an array contains ++ * a given item. ++ */ ++jQuery.contains = function(arr, item) { ++ for (var i = 0; i < arr.length; i++) { ++ if (arr[i] == item) ++ return true; ++ } ++ return false; ++} ++ ++/** ++ * highlight a given string on a jquery object by wrapping it in ++ * span elements with the given class name. ++ */ ++jQuery.fn.highlightText = function(text, className) { ++ function highlight(node) { ++ if (node.nodeType == 3) { ++ var val = node.nodeValue; ++ var pos = val.toLowerCase().indexOf(text); ++ if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { ++ var span = document.createElement("span"); ++ span.className = className; ++ span.appendChild(document.createTextNode(val.substr(pos, text.length))); ++ node.parentNode.insertBefore(span, node.parentNode.insertBefore( ++ document.createTextNode(val.substr(pos + text.length)), ++ node.nextSibling)); ++ node.nodeValue = val.substr(0, pos); ++ } ++ } ++ else if (!jQuery(node).is("button, select, textarea")) { ++ jQuery.each(node.childNodes, function() { ++ highlight(this) ++ }); ++ } ++ } ++ return this.each(function() { ++ highlight(this); ++ }); ++} ++ ++/** ++ * Small JavaScript module for the documentation. ++ */ ++var Documentation = { ++ ++ init : function() { ++ this.fixFirefoxAnchorBug(); ++ this.highlightSearchWords(); ++ this.initModIndex(); ++ }, ++ ++ /** ++ * i18n support ++ */ ++ TRANSLATIONS : {}, ++ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, ++ LOCALE : 'unknown', ++ ++ // gettext and ngettext don't access this so that the functions ++ // can savely bound to a different name (_ = Documentation.gettext) ++ gettext : function(string) { ++ var translated = Documentation.TRANSLATIONS[string]; ++ if (typeof translated == 'undefined') ++ return string; ++ return (typeof translated == 'string') ? translated : translated[0]; ++ }, ++ ++ ngettext : function(singular, plural, n) { ++ var translated = Documentation.TRANSLATIONS[singular]; ++ if (typeof translated == 'undefined') ++ return (n == 1) ? singular : plural; ++ return translated[Documentation.PLURALEXPR(n)]; ++ }, ++ ++ addTranslations : function(catalog) { ++ for (var key in catalog.messages) ++ this.TRANSLATIONS[key] = catalog.messages[key]; ++ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); ++ this.LOCALE = catalog.locale; ++ }, ++ ++ /** ++ * add context elements like header anchor links ++ */ ++ addContextElements : function() { ++ $('div[id] > :header:first').each(function() { ++ $('\u00B6'). ++ attr('href', '#' + this.id). ++ attr('title', _('Permalink to this headline')). ++ appendTo(this); ++ }); ++ $('dt[id]').each(function() { ++ $('\u00B6'). ++ attr('href', '#' + this.id). ++ attr('title', _('Permalink to this definition')). ++ appendTo(this); ++ }); ++ }, ++ ++ /** ++ * workaround a firefox stupidity ++ */ ++ fixFirefoxAnchorBug : function() { ++ if (document.location.hash && $.browser.mozilla) ++ window.setTimeout(function() { ++ document.location.href += ''; ++ }, 10); ++ }, ++ ++ /** ++ * highlight the search words provided in the url in the text ++ */ ++ highlightSearchWords : function() { ++ var params = $.getQueryParameters(); ++ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; ++ if (terms.length) { ++ var body = $('div.body'); ++ window.setTimeout(function() { ++ $.each(terms, function() { ++ body.highlightText(this.toLowerCase(), 'highlight'); ++ }); ++ }, 10); ++ $('') ++ .appendTo($('.sidebar .this-page-menu')); ++ } ++ }, ++ ++ /** ++ * init the modindex toggle buttons ++ */ ++ initModIndex : function() { ++ var togglers = $('img.toggler').click(function() { ++ var src = $(this).attr('src'); ++ var idnum = $(this).attr('id').substr(7); ++ console.log($('tr.cg-' + idnum).toggle()); ++ if (src.substr(-9) == 'minus.png') ++ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); ++ else ++ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); ++ }).css('display', ''); ++ if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) { ++ togglers.click(); ++ } ++ }, ++ ++ /** ++ * helper function to hide the search marks again ++ */ ++ hideSearchWords : function() { ++ $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); ++ $('span.highlight').removeClass('highlight'); ++ }, ++ ++ /** ++ * make the url absolute ++ */ ++ makeURL : function(relativeURL) { ++ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; ++ }, ++ ++ /** ++ * get the current relative url ++ */ ++ getCurrentURL : function() { ++ var path = document.location.pathname; ++ var parts = path.split(/\//); ++ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { ++ if (this == '..') ++ parts.pop(); ++ }); ++ var url = parts.join('/'); ++ return path.substring(url.lastIndexOf('/') + 1, path.length - 1); ++ } ++}; ++ ++// quick alias for translations ++_ = Documentation.gettext; ++ ++$(document).ready(function() { ++ Documentation.init(); ++}); +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_static/file.png и boost-cmake/tools/build/CMake/docs/build/html/_static/file.png различаются +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_static/jquery.js boost-cmake/tools/build/CMake/docs/build/html/_static/jquery.js +--- boost-cmake/tools/build/CMake/docs/build/html/_static/jquery.js 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_static/jquery.js 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,32 @@ ++/* ++ * jQuery 1.2.6 - New Wave Javascript ++ * ++ * Copyright (c) 2008 John Resig (jquery.com) ++ * Dual licensed under the MIT (MIT-LICENSE.txt) ++ * and GPL (GPL-LICENSE.txt) licenses. ++ * ++ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ ++ * $Rev: 5685 $ ++ */ ++(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else ++return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else ++return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else ++selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else ++this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else ++return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else ++jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else ++jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else ++ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else ++while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else ++for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else ++xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else ++jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else ++for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else ++s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else ++e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); +\ В конце файла нет новой строки +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_static/minus.png и boost-cmake/tools/build/CMake/docs/build/html/_static/minus.png различаются +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_static/navigation.png и boost-cmake/tools/build/CMake/docs/build/html/_static/navigation.png различаются +Двоичные файлы boost-cmake/tools/build/CMake/docs/build/html/_static/plus.png и boost-cmake/tools/build/CMake/docs/build/html/_static/plus.png различаются +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_static/pygments.css boost-cmake/tools/build/CMake/docs/build/html/_static/pygments.css +--- boost-cmake/tools/build/CMake/docs/build/html/_static/pygments.css 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_static/pygments.css 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,59 @@ ++.c { color: #800000; } /* Comment */ ++.err { border: 1px solid #FF0000 } /* Error */ ++.k { color: #0000aa; } /* Keyword */ ++.o { color: #707070 } /* Operator */ ++.cm { color: #408090; font-style: italic } /* Comment.Multiline */ ++.cp { color: #007020 } /* Comment.Preproc */ ++.c1 { color: #408090; font-style: italic } /* Comment.Single */ ++.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ ++.gd { color: #A00000 } /* Generic.Deleted */ ++.ge { font-style: italic } /* Generic.Emph */ ++.gr { color: #FF0000 } /* Generic.Error */ ++.gh { color: #000080; font-weight: bold } /* Generic.Heading */ ++.gi { color: #00A000 } /* Generic.Inserted */ ++.go { color: #303030 } /* Generic.Output */ ++.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ ++.gs { font-weight: bold } /* Generic.Strong */ ++.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ ++.gt { color: #0040D0 } /* Generic.Traceback */ ++.kc { color: #007020; font-weight: bold } /* Keyword.Constant */ ++.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ ++.kp { color: #007020 } /* Keyword.Pseudo */ ++.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ ++.kt { color: #602000 } /* Keyword.Type */ ++.m { color: #208050 } /* Literal.Number */ ++.s { color: #4070a0 } /* Literal.String */ ++.na { color: #4070a0 } /* Name.Attribute */ ++.nb { color: #007020 } /* Name.Builtin */ ++.nc { color: #0e84b5; font-weight: bold } /* Name.Class */ ++.no { color: #60add5 } /* Name.Constant */ ++.nd { color: #555555; font-weight: bold } /* Name.Decorator */ ++.ni { color: #d55537; font-weight: bold } /* Name.Entity */ ++.ne { color: #007020 } /* Name.Exception */ ++.nf { color: #06287e } /* Name.Function */ ++.nl { color: #002070; font-weight: bold } /* Name.Label */ ++.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ ++.nt { color: #062873; font-weight: bold } /* Name.Tag */ ++.nv { color: #bb60d5 } /* Name.Variable */ ++.ow { color: #007020; font-weight: bold } /* Operator.Word */ ++.w { color: #bbbbbb } /* Text.Whitespace */ ++.mf { color: #208050 } /* Literal.Number.Float */ ++.mh { color: #208050 } /* Literal.Number.Hex */ ++.mi { color: #208050 } /* Literal.Number.Integer */ ++.mo { color: #208050 } /* Literal.Number.Oct */ ++.sb { color: #4070a0 } /* Literal.String.Backtick */ ++.sc { color: #4070a0 } /* Literal.String.Char */ ++.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ ++.s2 { color: #4070a0 } /* Literal.String.Double */ ++.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ ++.sh { color: #4070a0 } /* Literal.String.Heredoc */ ++.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ ++.sx { color: #c65d09 } /* Literal.String.Other */ ++.sr { color: #235388 } /* Literal.String.Regex */ ++.s1 { color: #4070a0 } /* Literal.String.Single */ ++.ss { color: #517918 } /* Literal.String.Symbol */ ++.bp { color: #007020 } /* Name.Builtin.Pseudo */ ++.vc { color: #bb60d5 } /* Name.Variable.Class */ ++.vg { color: #bb60d5 } /* Name.Variable.Global */ ++.vi { color: #bb60d5 } /* Name.Variable.Instance */ ++.il { color: #208050 } /* Literal.Number.Integer.Long */ +\ В конце файла нет новой строки +diff -ruN boost-cmake/tools/build/CMake/docs/build/html/_static/searchtools.js boost-cmake/tools/build/CMake/docs/build/html/_static/searchtools.js +--- boost-cmake/tools/build/CMake/docs/build/html/_static/searchtools.js 1970-01-01 01:00:00.000000000 +0100 ++++ boost-cmake/tools/build/CMake/docs/build/html/_static/searchtools.js 2011-02-03 15:35:11.000000000 +0100 +@@ -0,0 +1,467 @@ ++/** ++ * helper function to return a node containing the ++ * search summary for a given text. keywords is a list ++ * of stemmed words, hlwords is the list of normal, unstemmed ++ * words. the first one is used to find the occurance, the ++ * latter for highlighting it. ++ */ ++ ++jQuery.makeSearchSummary = function(text, keywords, hlwords) { ++ var textLower = text.toLowerCase(); ++ var start = 0; ++ $.each(keywords, function() { ++ var i = textLower.indexOf(this.toLowerCase()); ++ if (i > -1) ++ start = i; ++ }); ++ start = Math.max(start - 120, 0); ++ var excerpt = ((start > 0) ? '...' : '') + ++ $.trim(text.substr(start, 240)) + ++ ((start + 240 - text.length) ? '...' : ''); ++ var rv = $('
').text(excerpt); ++ $.each(hlwords, function() { ++ rv = rv.highlightText(this, 'highlight'); ++ }); ++ return rv; ++} ++ ++/** ++ * Porter Stemmer ++ */ ++var PorterStemmer = function() { ++ ++ var step2list = { ++ ational: 'ate', ++ tional: 'tion', ++ enci: 'ence', ++ anci: 'ance', ++ izer: 'ize', ++ bli: 'ble', ++ alli: 'al', ++ entli: 'ent', ++ eli: 'e', ++ ousli: 'ous', ++ ization: 'ize', ++ ation: 'ate', ++ ator: 'ate', ++ alism: 'al', ++ iveness: 'ive', ++ fulness: 'ful', ++ ousness: 'ous', ++ aliti: 'al', ++ iviti: 'ive', ++ biliti: 'ble', ++ logi: 'log' ++ }; ++ ++ var step3list = { ++ icate: 'ic', ++ ative: '', ++ alize: 'al', ++ iciti: 'ic', ++ ical: 'ic', ++ ful: '', ++ ness: '' ++ }; ++ ++ var c = "[^aeiou]"; // consonant ++ var v = "[aeiouy]"; // vowel ++ var C = c + "[^aeiouy]*"; // consonant sequence ++ var V = v + "[aeiou]*"; // vowel sequence ++ ++ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 ++ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 ++ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 ++ var s_v = "^(" + C + ")?" + v; // vowel in stem ++ ++ this.stemWord = function (w) { ++ var stem; ++ var suffix; ++ var firstch; ++ var origword = w; ++ ++ if (w.length < 3) ++ return w; ++ ++ var re; ++ var re2; ++ var re3; ++ var re4; ++ ++ firstch = w.substr(0,1); ++ if (firstch == "y") ++ w = firstch.toUpperCase() + w.substr(1); ++ ++ // Step 1a ++ re = /^(.+?)(ss|i)es$/; ++ re2 = /^(.+?)([^s])s$/; ++ ++ if (re.test(w)) ++ w = w.replace(re,"$1$2"); ++ else if (re2.test(w)) ++ w = w.replace(re2,"$1$2"); ++ ++ // Step 1b ++ re = /^(.+?)eed$/; ++ re2 = /^(.+?)(ed|ing)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ re = new RegExp(mgr0); ++ if (re.test(fp[1])) { ++ re = /.$/; ++ w = w.replace(re,""); ++ } ++ } ++ else if (re2.test(w)) { ++ var fp = re2.exec(w); ++ stem = fp[1]; ++ re2 = new RegExp(s_v); ++ if (re2.test(stem)) { ++ w = stem; ++ re2 = /(at|bl|iz)$/; ++ re3 = new RegExp("([^aeiouylsz])\\1$"); ++ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); ++ if (re2.test(w)) ++ w = w + "e"; ++ else if (re3.test(w)) { ++ re = /.$/; ++ w = w.replace(re,""); ++ } ++ else if (re4.test(w)) ++ w = w + "e"; ++ } ++ } ++ ++ // Step 1c ++ re = /^(.+?)y$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ re = new RegExp(s_v); ++ if (re.test(stem)) ++ w = stem + "i"; ++ } ++ ++ // Step 2 ++ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ suffix = fp[2]; ++ re = new RegExp(mgr0); ++ if (re.test(stem)) ++ w = stem + step2list[suffix]; ++ } ++ ++ // Step 3 ++ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ suffix = fp[2]; ++ re = new RegExp(mgr0); ++ if (re.test(stem)) ++ w = stem + step3list[suffix]; ++ } ++ ++ // Step 4 ++ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; ++ re2 = /^(.+?)(s|t)(ion)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ re = new RegExp(mgr1); ++ if (re.test(stem)) ++ w = stem; ++ } ++ else if (re2.test(w)) { ++ var fp = re2.exec(w); ++ stem = fp[1] + fp[2]; ++ re2 = new RegExp(mgr1); ++ if (re2.test(stem)) ++ w = stem; ++ } ++ ++ // Step 5 ++ re = /^(.+?)e$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ re = new RegExp(mgr1); ++ re2 = new RegExp(meq1); ++ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); ++ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) ++ w = stem; ++ } ++ re = /ll$/; ++ re2 = new RegExp(mgr1); ++ if (re.test(w) && re2.test(w)) { ++ re = /.$/; ++ w = w.replace(re,""); ++ } ++ ++ // and turn initial Y back to y ++ if (firstch == "y") ++ w = firstch.toLowerCase() + w.substr(1); ++ return w; ++ } ++} ++ ++ ++/** ++ * Search Module ++ */ ++var Search = { ++ ++ _index : null, ++ _queued_query : null, ++ _pulse_status : -1, ++ ++ init : function() { ++ var params = $.getQueryParameters(); ++ if (params.q) { ++ var query = params.q[0]; ++ $('input[name="q"]')[0].value = query; ++ this.performSearch(query); ++ } ++ }, ++ ++ /** ++ * Sets the index ++ */ ++ setIndex : function(index) { ++ var q; ++ this._index = index; ++ if ((q = this._queued_query) !== null) { ++ this._queued_query = null; ++ Search.query(q); ++ } ++ }, ++ ++ hasIndex : function() { ++ return this._index !== null; ++ }, ++ ++ deferQuery : function(query) { ++ this._queued_query = query; ++ }, ++ ++ stopPulse : function() { ++ this._pulse_status = 0; ++ }, ++ ++ startPulse : function() { ++ if (this._pulse_status >= 0) ++ return; ++ function pulse() { ++ Search._pulse_status = (Search._pulse_status + 1) % 4; ++ var dotString = ''; ++ for (var i = 0; i < Search._pulse_status; i++) ++ dotString += '.'; ++ Search.dots.text(dotString); ++ if (Search._pulse_status > -1) ++ window.setTimeout(pulse, 500); ++ }; ++ pulse(); ++ }, ++ ++ /** ++ * perform a search for something ++ */ ++ performSearch : function(query) { ++ // create the required interface elements ++ this.out = $('#search-results'); ++ this.title = $('

' + _('Searching') + '

').appendTo(this.out); ++ this.dots = $('').appendTo(this.title); ++ this.status = $('

').appendTo(this.out); ++ this.output = $('