Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost Getting Started on Unix Variants

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Getting Started on Unix Variants

1   Get Boost

Самый надежный способ получить копию Boost — загрузить дистрибутив изSourceForge.:

  1. Скачатьboost_1_62_0.tar.bz2.

  2. В каталоге, где вы хотите разместить установку Boost, выполните

    tar --bzip2 -xf/path/to/boost_1_62_0.tar.bz2
    

Other Packages

RedHat, Debian, and other distribution packagers supply Boost library packages, however you may need to adapt these instructions if you use third-party packages, because their creators usually choose to break Boost up into several packages, reorganize the directory structure of the Boost distribution, and/or rename the library binaries.1 If you have any trouble, we suggest using an official Boost distribution from SourceForge.

2   The Boost Distribution

Это эскиз результирующей структуры каталога:

boost_1_62_0/ .................The “boost root directory”
   index.htm .........A copy of www.boost.org starts here
   boost/ .........................All Boost Header files
    
   libs/ ............Tests, .cpps, docs, etc., by library
     index.html ........Library documentation starts here
     algorithm/
     any/
     array/
                     …more libraries…
   status/ .........................Boost-wide test suite
   tools/ ...........Utilities, e.g. Boost.Build, quickbook, bcp
   more/ ..........................Policy documents, etc.
   doc/ ...............A subset of all Boost library docs

Важно отметить следующее:

  1. Путь к корневому каталогуboost(часто/usr/local/boost_1_62_0) иногда упоминается как$BOOST_ROOTв документации и списках рассылки

    .
  2. Для компиляции чего-либо в Boost вам нужен каталог, содержащийboost/подкаталог в вашем#includePath.

  3. Since all of Boost's header files have the .hpp extension, and live in the boost/ subdirectory of the boost root, your Boost #include directives will look like:

    #include <boost/whatever.hpp>
    

    или

    #include "boost/whatever.hpp"
    

    В зависимости от ваших предпочтений в отношении использования угловой кронштейн включает.

  4. Не отвлекайтесь наdoc/подкаталог; он содержит только подмножество документации Boost. Начните сlibs/index.html, если вы ищете всю энчиладу.

3   Header-Only Libraries

Первое, что многие люди хотят знать, это: «Как мне построить Рост?» Хорошая новость заключается в том, что часто нечего строить.

Nothing to Build?

Most Boost libraries are header-only: they consist entirely of header files containing templates and inline functions, and require no separately-compiled library binaries or special treatment when linking.

Единственные библиотеки, которыедолжны быть построены отдельно:

Некоторые библиотеки имеют опциональные отдельно скомпилированные двоичные файлы:

  • Boost.DateTimeимеет двоичный компонент, который необходим только в том случае, если вы используете егоto_string/from_stringили функции сериализации, или если вы нацелены на Visual C++ 6.x или Borland.
  • Boost.Graphтакже имеет двоичный компонент, который необходим только в том случае, если вы намереныразобрать файлы GraphViz.
  • Boost.Mathимеет двоичные компоненты для функций TR1 и C99 cmath.
  • Boost.Randomимеет двоичный компонент, который необходим только при использованииrandom_device.
  • Boost.Testможет использоваться в режиме «только заголовк» или «отдельно скомпилированный», хотяотдельная компиляция рекомендуется для серьезного использования.
  • Boost.Exceptionобеспечивает неинтрузивную реализацию exception_ptr для 32-битных _MSC_VER==1310 и _MSC_VER==1400, для которых требуется отдельно компилируемая двоичная. Это можно сделать с помощью #define BOOST_ENABLE_NON_INTRUSIVE_EXCEPTION_PTR.

4   Build a Simple Program Using Boost

Чтобы все было просто, давайте начнем с использования библиотеки только для заголовков. Следующая программа считывает последовательность целых чисел из стандартного ввода, использует Boost. Ламбда умножает каждое число на три и записывает их на стандартный выход:

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;
    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " " );
}

Скопируйте текст этой программы в файл под названиемexample.cpp.

Теперь в каталоге, где вы сохранилиexample.cpp, выдайте следующую команду:

c++ -I path/to/boost_1_62_0 example.cpp -o example

Чтобы проверить результат, введите:

echo 1 2 3 | ./example

4.1   Errors and Warnings

Не пугайтесь, если увидите предупреждения компилятора, исходящие из заголовков Boost. Мы пытаемся их устранить, но это не всегда практично.3Ошибки — это другое дело. Если вы видите ошибки компиляции на этом этапе в руководстве, убедитесь, что вы правильно скопировалипримерную программуи правильно идентифицировали.

5   Prepare to Use a Boost Library Binary

Если вы хотите использовать одну из отдельно собранных библиотек Boost, вам нужно будет приобрести библиотечные двоичные файлы.

5.1   Easy Build and Install

Выдайте следующие команды в оболочке (не введите$; это представляет собой подсказку оболочки):

$ cd path/to/boost_1_62_0
$ ./bootstrap.sh --help

Выберите опции конфигурации и включите./bootstrap.shснова без--помогитеопции. Если у вас нет разрешения на запись в каталоге/usr/local/вашей системы, вы, вероятно, захотите хотя бы использовать

$ ./bootstrap.sh --prefix=path/to/installation/prefix

установить в другом месте. Кроме того, рассмотрите возможность использования— показывайте библиотекии— с библиотеками =библиотечный список, чтобы ограничить длительное ожидание, которое вы испытаете, если создадите все. Наконец,

$ ./b2 install

Оставит двоичные файлы Boost в подкаталогеlib /вашего установочного префикса. Вы также найдете копию заголовков Boost вподкаталоге префикса установки /, поэтому вы можете впредь использовать этот каталог в качестве#includeпути вместо корневой директории Boost.

перейти к следующему шагу

5.2   Or, Build Custom Binaries

Если вы используете компилятор по умолчанию, вам нужно использоватьBoost.Buildдля создания двоичных файлов.

Вы также будете использовать этот метод, если вам нужен нестандартный вариант сборки (см.Boost). Постройте документациюдля более подробной информации.

5.2.1   Install Boost.Build

Boost.Build— текстовая система для разработки, тестирования и установки программного обеспечения. Во-первых, вам нужно будет построить и установить его. Для этого:

  1. Перейдите в каталогинструментов/сборки/.
  2. Запускbootstrap.sh
  3. Запускb2 установки— префикс =PREFIX, гдеPREFIX— это каталог, где вы хотите увеличить. Строительство будет установлено
  4. ДобавьтеPREFIX/binк переменной среды PATH.

5.2.2   Identify Your Toolset

Во-первых, найдите набор инструментов, соответствующий вашему компилятору, в следующей таблице (обновленный список всегда доступен). Создание документации.

Note

If you previously chose a toolset for the purposes of building b2, you should assume it won't work and instead choose newly from the table below.

Toolset Name Vendor Notes
acc Хьюлетт Паккард Известно, что только самые последние версии хорошо работают с Boost.
Борланд Борланд  
como Комо Компьютеры Использование этого набора инструментов может потребоватьнастройкидругого набора инструментов для работы в качестве его бэкэнда.
Дарвин Компьютер Apple Версия инструментария GCC от Apple с поддержкой функций Darwin и MacOS X, таких как фреймворки.
gcc Проект Gnu Поддержка компиляторов Cygwin и MinGW.
hp_cxx Хьюлетт Паккард Ориентирован на операционную систему Tru64.
Интеллект Intel  
msvc Microsoft  
Солнце Oracle Известно, что только последние версии хорошо работают с Boost. Обратите внимание, что компилятор Oracle/Sun имеет большое количество опций, которые влияют на бинарную совместимость: очень важно, чтобы библиотеки были построены с теми же опциями, которые будут использовать ваши приложения. В частности, имейте в виду, что стандартная библиотека по умолчанию может плохо работать с Boost, если вы не создаете для C++11. Конкретные параметры компилятора, которые вам нужны, могут быть введены с опциями командной строки b2cxxflags = ''и''linkflags =. Например, для построения со стандартной библиотекой Apache в режиме C++03 используютb2cxxflags=-library=stdcxx4linkflags=-library=stdcxx4.
vacpp IBM Компилятор VisualAge C++.

Если у вас установлено несколько версий конкретного компилятора, вы можете добавить номер версии к имени набора инструментов, которому предшествует дефис, напримерintel-9.0илиborland-5.4.3.

5.2.3   Select a Build Directory

Boost.Buildразместит все промежуточные файлы, которые он генерирует при создании вкаталог сборки. Если ваш корневой каталог Boost написан, этот шаг не является строго необходимым: по умолчанию Boost. Build создаст подкаталогbin.v2/для этой цели в вашем текущем рабочем каталоге.

5.2.4   Invoke b2

Измените текущий каталог на корневой каталог Boost и вызовитеb2следующим образом:

b2 --build-dir=build-directory toolset=toolset-name   stage

Для полного описания этих и других вариантов вызова см. документациюBoost.Build.

Например, ваш сеанс может выглядеть так:

$ cd ~/boost_1_62_0
$ b2 --build-dir=/tmp/build-boost toolset=gcc stage

Это позволит создавать статические и общие многопоточные варианты библиотек. Чтобы построить все варианты, передайте дополнительную опцию: «— тип сборки = полный».

Построение специальнойстадиицели ставит библиотечные двоичные файлы Boost настадии/lib/подкаталог дерева Boost. Чтобы использовать другой каталог, передайте--stagedir=опциюb2.

Note

b2 is case-sensitive; it is important that all the parts shown in bold type above be entirely lower-case.

Для описания других вариантов можно пройти при вызовеb2, тип:

b2 --help

В частности, чтобы ограничить количество затраченного времени на строительство, вас могут заинтересовать:

  • Просмотр списка названий библиотек с--show-библиотеки
  • Ограничение того, какие библиотеки строятся с помощью---библиотечного имениили--- безбиблиотечного именивариантов
  • Выберите конкретный вариант сборки, добавиввыпускилиотладкув командную строку.

Note

Boost.Build can produce a great deal of output, which can make it easy to miss problems. If you want to make sure everything is went well, you might redirect the output into a file by appending “>build.log 2>&1” to your command line.

5.3   Expected Build Output

В процессе создания библиотек Boost можно ожидать увидеть некоторые сообщения, напечатанные на консоли. Они могут включать

  • Уведомления о конфигурации библиотеки Boost — например, библиотека Regex выводит сообщение об ICU при сборке без поддержки Unicode, и библиотека Python может быть пропущена без ошибки (но с уведомлением), если у вас нет установленного Python.

  • Сообщения от строительного инструмента, которые сообщают о количестве целей, которые были построены или пропущены. Не удивляйтесь, если эти цифры не имеют для вас никакого смысла; есть много целей на библиотеку.

  • Создайте сообщения действий, описывающие, что делает инструмент, которые выглядят примерно так:

    toolset-name.c++long/path/to/file/being/built
    
  • Предупреждения компилятора.

5.4   In Case of Build Errors

Единственные сообщения об ошибках, которые вы видите при создании Boost, должны быть связаны с поддержкой библиотекой IOStreams форматов zip и bzip2, как описаноздесь. Установите соответствующие пакеты разработки для libz и libbz2, если вам нужны эти функции. Другие ошибки при создании библиотек Boost вызывают беспокойство.

Если кажется, что система сборки не может найти компилятор и / или линкеры, подумайте о настройке.файл user-config.jam, как описаноздесь. Если это не ваша проблема или проблемафайл user-config.jamне работает для вас, пожалуйста, задайте вопросы о настройке Boost для вашего компилятора наBoost. Составьте список рассылки.

7   Conclusion and Further Resources

Это завершает ваше введение в Boost и интеграцию его с вашими программами. Когда вы начнете использовать Boost всерьез, наверняка есть несколько дополнительных пунктов, которые вы хотели бы, чтобы мы рассмотрели. Однажды у нас может быть «Книга 2 в серии Getting Started», которая обращается к ним. До этого мы предлагаем вам использовать следующие ресурсы. Если вы не можете найти то, что вам нужно, или есть что-то, что мы можем сделать, чтобы сделать этот документ более понятным, пожалуйста, отправьте его в список рассылкиBoost Users.

Onward

Удачи и веселья!

—the Boost Developers


[1]Если разработчики пакетов Boost хотят работать с нами, чтобы убедиться, что эти инструкции могут быть использованы с их пакетами, мы будем рады помочь. Пожалуйста, сообщите о своем интересеСписок разработчиков Boost.
[2]Этот вариант представляет собой тире, за которым следует символ «L», который очень похож на цифру 1 в некоторых шрифтах.
[3]Помните, что предупреждения специфичны для каждой реализации компилятора. Разработчик данной библиотеки Boost может не иметь доступа к компилятору. Кроме того, некоторые предупреждения чрезвычайно трудно устранить в общем коде, до такой степени, что это не стоит проблем. Наконец, некоторые компиляторы не имеют механизма исходного кода для подавления предупреждений.
[4]Эта конвенция отличает статическую версию библиотеки Boost от библиотеки импорта для одинаково настроенной библиотеки Boost DLL, которая в противном случае имела бы то же название.
[5]Эти библиотеки были составлены без оптимизации или наложения, с включенными полными символами отладки и безNDEBUG#defined. Хотя это правда, что иногда эти варианты не влияют на бинарную совместимость с другим скомпилированным кодом, вы не можете рассчитывать на это с библиотеками Boost.
[6]Эта функция STLPort является устаревшей, потому что невозможно сделать ее прозрачной для пользователя; мы не рекомендуем ее.

Статья Boost Getting Started on Unix Variants раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 21:17:26/0.013602018356323/0