1 апр. 2009 г.

Библиотека Boost

Boostсобрание библиотек, расширяющих C++. Cвободно распространяются по лицензии Boost Software License вместе с исходным кодом. Проект был создан после принятия стандарта C++, когда многие были недовольны не включением в стандарт некоторых библиотек. Проект является своего рода «испытательным полигоном» для различных расширений языка и часть библиотек являются кандидатами на включение в следующий стандарт C++.

Boost имеет заметную направленность на исследования и расширяемость (метапрограммирование и обобщённое программирование с активным использованием шаблонов). Благодаря тщательному подбору и контролю качества, библиотеки, включённые в Boost, обладают высокой надёжностью и производительностью. У "велосипедов" из boost существует огромное количество пользователей - С++ разработчиков, поэтому код библиотек boost является очень хорошо протестирован и является очень надёжным.

Крайне рекомендую данную коллекцию библиотек всем C++ разработчикам для использования в своих проектах. Вместо написания собственных велосипедов, лучше загляните в boost, не присутствует ли там уже готовое решение, поскольку качество вашего велосипеда будет насравнимо ниже чем boost'овского аналога, потому что пользователем вашего вилосипеда будете только вы и оттестировать его во всех возможных случаях вы не сможете физически. Если вас не совсем устроит эффективность некоторых библиотек из boost (как например boost::lexical_cast), то не забывайте, что библиотеки boost чрезвычайно гибки и вы всегда можете расширить функциональность того или иного велосипеда с помощью C++ шаблонов (скажем, специализировать шаблон boost::lexical_cast<> для определённого типа), предоставив свою "эффективную реализацию".

 
 

 
 

Сборка библиотеки Boost

  • Качаем архив с исходными текстами здесь: http://www.boost.org/users/download/
  • Распаковываем архив в директорию %BOOST_ROOT% (см. статью Development Environment Settings).

    Все что вам надо знать на первое время - это:
  • %BOOST_ROOT%\
    |---- tools       - инструменты, в частности bjam
    |---- boost       - заголовочные файлы boost
    |---- libs        - документация
    |---- lib   - динамические и статические библиотеки, появятся после сборки
    |---- index.html  - начало знакомства с boost
    ...
    
  • Собираем bjam и настраиваем Boost.Build

    Bjam - это мощная утилита, автоматизирующая процесс сборки. Boost.Build - это система сборки на базе bjam, набор скриптов для множества компиляторов, позволяет управлять ими через единый интерфейс. Т.е. вам не надо знать как, например, для gcc настроить precompiled headers…

    Запускаем "%BOOST_ROOT%\tools\jam\build_dist.bat", который собирет bjam.exe

    Теперь копируем bjam.exe из "%BOOST_ROOT%\tools\jam\stage\boost-jam-3.1.17-1-ntx86? в "%SystemRoot%\system32" или добавляем директорию "%BOOST_ROOT%\tools\jam\stage\boost-jam-3.1.17-1-ntx86" в системную переменную PATH. Что бы проверить, что все идет по плану - запускаем консоль и выполняем команду:
  • bjam.exe
    

    В результате должны получить сообщение:

    Unable to load Boost.Build: could not find "boost-build.jam"
    ---------------------------------------------------------------
    Attempted search from C:\Documents and Settings\Tanya up to the root
    and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: D:\c++\libs\boost
    _trunk\tools\build\v21, D:\c++\libs\boost_trunk1.
    Please consult the documentation at 'http://www.boost.org'.
    
    Это сообщене говорит нам о том, что надо настроить Boost.Build. Для верной работы Boost.Build необходимо существование двух переменных: BOOST_ROOT - указывает на корневую директорию, куда мы изначально распаковали boost архив (см. статью Development Environment Settings) BOOST_BUILD_PATH - указывает на %BOOST_ROOT%\tools\build\v2 Важно! Не ставте слэши в конце! Напомню, что установить системные переменные можно в Панель управления -> Система -> Дополнительно -> Переменные среды -> Системные переменные Запускаем консоль и выполняем команду:
    bjam.exe
    

    Если вы получили следующее сообщение значит вы на правильном пути:

    warning: No toolsets are configured.
    warning: Configuring default toolset "msvc".
    warning: If the default is wrong, your build may not work correctly.
    warning: Use the "toolset=xxxxx" option to override our guess.
    warning: For more configuration options, please consult
    warning: http://boost.org/boost-build2/doc/html/bbv2/advanced/configuration.html
    
    error: error: no Jamfile in current directory found, and no target references sp
    ecified.
    
  • Завершающая стадия - компиляция boost.

    Создаем %BOOST_ROOT%\build.bat с содержимым:
  • @echo off
    bjam ^
        -j2 ^
        --toolset=msvc-8.0 ^
        release debug ^
        --without-math ^
        --without-graph ^
        --without-python ^
        threading=multi link=static link=shared runtime-link=static runtime-link=shared ^
       stage --stagedir="./lib";
       pause
    
    -j2 - задействовать два ядра, с целью увеличения скорости компиляции --toolset=msvc-8.0 - инструмент с помощью которого собирать boost (gcc, msvc-8.0, msvc-9.0) release debug - без коментариев --without-math - не собирать Boost.Math --without-graph - не собирать Boost.Graph --without-python - не собирать Boost.Python threading=multi link=static link=shared runtime-link=static runtime-link=shared - настраиваем сборку, думаю тут все понятно stage - директория, в торорую будут помещены статические и динамические библиотеки Скажу сразу, что процесс сборки достаточно долгий, на моей машине он занимает около 20 минут и требует около 4гб места на диске.
  • Для использования boost в своих проектах, настраивайте конфигурацию проектов следующим образом:
    Добавьте путь "$(BOOST_ROOT)" в список "Additional Include Directories" опций компиллятора.
    Добавьте путь "$(BOOST_ROOT)\lib" в список "Additional Library Directories" опций линкера.
    Многие добавляют эти пути в "Tools/Options/Projects and Solutions/VC++ Directories", однако я так не делаю, и вам не рекомендую, ибо "юзаю/неюзаю" boost есть свойство отдельно проекта, ну накрайняк solution'а, а никак не всей студии, ведь не все проекты, которые, возможно, у вас собираются, зависят от boost, соответсвенно нехрен всяким неандертальским проектам иметь видимость boost'овских заголовочных файлов.

Частично стянуто отсюда: http://www.gigamega.net/category/boost/

P.S.: Я Boost собираю следующим образом:

"bjam.exe" -j 12 --buid-dir="build" --build-type=complete --toolset=msvc-8.0 address-model=32  --stagedir="./lib" stage
"bjam.exe" -j 12 --buid-dir="build" --build-type=complete --toolset=msvc-9.0 address-model=32  --stagedir="./lib" stage

P.P.S.: Улыбнуло мнение, взятое отсюда: http://www.gigamega.net/category/boost/ :):) :
Некоторые C++ программисты используют boost, некоторые о нем только слышали, некоторые - нет. Так вот, последние 2 категории - тупиковая ветвь развития (о тех, кому не позволяет железо или компилятор я не говорю), как правило, такие люди даже не доросли до стандартной библиотеки, а их стиль программирования можно назвать “Си с классами”.

P.P.S.: Удачи вам в использовании Boost в ваших проектах!

14 комментариев:

  1. Для сборки с поддержкой ZLIB юзаем строку:
    ----------------------------------------
    bjam --build-type=complete --toolset=msvc-8.0 --with-iostreams -sNO_COMPRESSION=0 -sNO_ZLIB=0 -sZLIB_SOURCE="f:\libraries\zlib_src" stage
    ----------------------------------------

    ОтветитьУдалить
  2. They are really also a lot easier to stash absent compared for
    the Cap Barbell adjustable ones, which you must unscrew if
    you want to put them again to the plastic material circumstance.


    Also visit my blog getfitnstrong.com

    ОтветитьУдалить
  3. Power teaching isn't just for youthful individuals, either.

    Here is my web blog weight sets for sale

    ОтветитьУдалить
  4. This is often great for a house gymnasium wherever you might have to drive the device outside of just
    how, or perhaps it really is build on the second flooring exactly where it would not become
    a fantastic plan to own a huge selection of lbs of excess weight placing regular strain about the
    flooring joists.

    Also visit my webpage :: http://Www.Getfitnstrong.com/adjustable-dumbbells/dumbbells-sale-further/

    ОтветитьУдалить
  5. Location 1 knee up to the bench for help and the other to the floor and a single arm locked out to the
    bench.

    Feel free to visit my web page ... sit up bench

    ОтветитьУдалить
  6. As a end result the quantity of pounds one particular can take care of in a very barbell squat is restricted via the energy with
    the lessen again.

    Here is my blog ... bowflex selecttech 552

    ОтветитьУдалить
  7. Energy teaching encourages your whole body to change only excess fat into power
    simply because you have to have the muscular tissues to carry on
    strength coaching.

    Feel free to visit my web site; Recommended Internet page

    ОтветитьУдалить
  8. Lift your upper entire body a handful of inches from the ground, preserving
    your neck, shoulders, and head aligned.

    Feel free to surf to my blog post ... http://www.getfitnstrong.com/adjustable-dumbbells/

    ОтветитьУдалить
  9. Acquiring your stabilizing and main muscles can give you genuine environment strength, as opposed to fitness center machine energy.


    Here is my site ... click the up coming internet site

    ОтветитьУдалить
  10. Are you able to assemble the body you'd like?

    Here is my weblog: bowflex selecttech 552 adjustable dumbbells pair

    ОтветитьУдалить
  11. Some are specifically made for many who are taller and some absolutely are
    a bit much more compact; whilst you'll be able to typically change the stride on any Bowflex elliptical you do would like to test out a couple of distinctive designs in advance of purchasing the one particular which is ideal in your case.

    my website: adjustable dumbbell set

    ОтветитьУдалить
  12. In case you happen to be trying to identify a successful household gym which
    will supply you which has a huge array of physical exercises apart with the bother of
    pounds plates, the Bowflex PR3000 Dwelling
    Gym could maybe be particularly whatever you ought to have.


    My website; bowflex selecttech dumbbells

    ОтветитьУдалить
  13. The Lifestyler 2800 may not be by far the most luxurious treadmill to the market, however it is great for anyone who need a quality work out that doesn't trigger don and tear on the system, and won't
    get during the technique for your home's natural magnificence.

    Look into my web-site - http://Www.Getfitnstrong.com/bowflex-dumbbells/bowflex-adjustable-dumbbe...

    ОтветитьУдалить
  14. As an alternative, like a spotter, the Bowflex makes you're employed hard the complete time!

    Visit my homepage; next page

    ОтветитьУдалить