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

Boost Getting Started on Windows

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 Windows

A note to Cygwin and MinGW users

If you plan to use your tools from the Windows command prompt, you're in the right place. If you plan to build from the Cygwin bash shell, you're actually running on a POSIX platform and should follow the instructions for getting started on Unix variants. Other command shells, such as MinGW's MSYS, are not supported—they may or may not work.

1   Get Boost

Самый надежный способ получить копию Boost — скачатьboost_1_62_0.7zилиboost_1_62_0.zipи распакуйте его, чтобы установить полный дистрибутив Boost.1

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
   lib\ .....................precompiled library binaries
   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(частоC:\ProgramFiles\boost\boost_1_62_0) иногда упоминается как$BOOST_ROOTв документации и списках рассылки.

  2. Чтобы собрать что-либо в Boost, вам нужен каталог, содержащийboost\подкаталог в вашем#includeпути. Конкретные шаги для настройки#включаютпути в Microsoft Visual Studio следуют позже в этом документе; если вы используете другую IDE, пожалуйста, обратитесь к документации вашего продукта для инструкций.

  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"
    

    В зависимости от ваших предпочтений в отношении использования угловой кронштейн включает. Даже пользователи Windows могут (и, по причинам переносимости, вероятно, должны) использовать переадресации в директивах#include; вашему компилятору все равно.

  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.
  • 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.

Note

To build the examples in this guide, you can use an Integrated Development Environment (IDE) like Visual Studio, or you can issue commands from the command prompt. Since every IDE and compiler has different options and Microsoft's are by far the dominant compilers on Windows, we only give specific directions here for Visual Studio 2005 and .NET 2003 IDEs and their respective command prompt compilers (using the command prompt is a bit simpler). If you are using another compiler or IDE, it should be relatively easy to adapt these instructions to your environment.

4.1   Build From the Visual Studio IDE

  • Из менюФайлVisual Studio выберитеНовый>Проект...

  • В левой панели полученного диалогаNew ProjectвыберитеVisual C++>Win32.

  • В правой панели выберитеWin32 Console Application(VS8.0) илиWin32 Console Project(VS7.1).

  • В полеимявведите «пример»

  • Нажмите правой кнопкой мышипримерв панелиПроводник решенийи выберитеСвойстваиз полученного всплывающего меню

  • In Configuration Properties > C/C++ > General > Additional Include Directories, enter the path to the Boost root directory, for example

    C:\ProgramFiles\boost\boost_1_62_0

  • ВСвойства конфигурации>C/C++>Предкомпилированные заголовки, изменениеИспользуйте предварительно скомпилированный заголовок (/Yu)доНе использовать предварительно скомпилированные заголовки.2

  • Заменить содержимоеexample.cpp, генерируемое IDE, приведенным выше примерным кодом.

  • Из менюСтроитьвыберитеСтроить Решение.

Чтобы проверить ваше приложение, нажмите клавишу F5 и введите следующее в полученное окно, а затем клавишу Return:

1 2 3

Затем удерживайте клавишу управления и нажмите "Z", а затем клавишу возврата.

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

4.2   Or, Build From the Command Prompt

Из менюПуск, если вы являетесь пользователем Visual Studio 2005, выберите

All Programs > Microsoft Visual Studio 2005 > Visual Studio Tools > Visual Studio 2005 Command Prompt

Если вы работаете в Visual Studio. Пользователь NET 2003, выбор

All Programs > Microsoft Visual Studio .NET 2003 > Visual Studio .NET Tools > Visual Studio .NET 2003 Command Prompt

Создать специальное окнокомандной строкидля компилятора Visual Studio. В этом окне установитетекущий каталогв подходящее место для создания некоторых временных файлов и введите следующую команду с последующим ключом возврата:

cl /EHsc /I path\to\boost_1_62_0 path\to\example.cpp

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

echo 1 2 3 | example

4.3   Errors and Warnings

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

5   Prepare to Use a Boost Library Binary

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

5.1   Simplified Build From Source

Если вы хотите использовать Visual C++, вы можете использовать простую процедуру сборки, описанную в этом разделе. Откройте командную строку и измените свой текущий каталог на корневой каталог Boost. Затем введите следующие команды:

bootstrap
.\b2

Первая команда готовит буст. Создайте систему для использования. Вторая команда вызывает Буст. Постройте для создания отдельно собранных библиотек Boost. Проконсультируйтесь с. Постройте документациюдля списка разрешенных вариантов.

5.2   Or, Build Binaries From Source

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

5.2.1   Install Boost.Build

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

  1. Перейдите в каталогинструментов\сборки\.
  2. Runbootstrap.bat
  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.
Вакпп IBM Компилятор VisualAge C++.

Если у вас установлено несколько версий конкретного компилятора, вы можете добавить номер версии к имени набора инструментов, которому предшествует дефис, напримерintel-9.0илиborland-5.4.3.В Windows добавьте номер версии, даже если у вас установлена только одна версия(если вы не используете наборы инструментов msvc или gcc, которые имеют специальный код обнаружения версии) илиавтоматическое связываниевыйдет из строя.

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 --build-type=complete stage

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

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

C:\WINDOWS> cd C:\Program Files\boost\boost_1_62_0
C:\Program Files\boost\boost_1_62_0> b2 ^
More? --build-dir="C:\Documents and Settings\dave\build-boost" ^
More? --build-type=complete msvc stage

Обязательно прочитайтеэту заметкуо появлении^,More?и кавычки"в этой строке.

Вариант «—строительный тип = полный» вызывает повышение. Создайте все поддерживаемые варианты библиотек. Инструкции о том, как строить только конкретные варианты, спрашивайте на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_1_62_0.7zи использовать7-Zipдля его декомпрессии. Мы больше не рекомендуем файлы .zip для Boost, потому что они в два раза больше, чем эквивалентные файлы 7z. Мы не рекомендуем использовать встроенную декомпрессию Windows, поскольку она может быть болезненно медленной для больших архивов.
[2]Нет проблем с использованием Boost с предкомпилированными заголовками; эти инструкции просто избегают предкомпилированных заголовков, потому что для этого потребуются изменения исходного кода, используемого в примерах.
[3]

В этом примере, символ заботы^является способом продолжения команды на нескольких линиях, и должен бытьокончательным символом, используемым на линии для продолжения (т.е. не следовать за ним с пробелами). Командная строка отвечаетБольше.Для получения дополнительной информации. Не стесняйтесь опускать кареты и последующие новые линии; мы использовали их, чтобы пример поместился на странице разумной ширины.

Командная строка рассматривает каждый бит белого пространства в команде как разделитель аргументов. Это означает, что кавычки (") должны сохранять текст вместе, когда один аргумент командной строки содержит пробелы, как в

<
--build-dir="C:\Documents_and_Settings\dave\build-boost"
>

. Также, например, вы не можете добавить места вокруг знака=, как в

<
--build-dir_=_"C:\Documents and Settings\dave\build-boost"
>.
[4]Помните, что предупреждения специфичны для каждой реализации компилятора. Разработчик данной библиотеки Boost может не иметь доступа к компилятору. Кроме того, некоторые предупреждения чрезвычайно трудно устранить в общем коде, до такой степени, что это не стоит проблем. Наконец, некоторые компиляторы не имеют механизма исходного кода для подавления предупреждений.
[5]Эта конвенция отличает статическую версию библиотеки Boost от библиотеки импорта для одинаково настроенной библиотеки Boost DLL, которая в противном случае имела бы то же название.
[6]Эти библиотеки были составлены без оптимизации или наложения, с включенными полными символами отладки и безNDEBUG#defined. Хотя это правда, что иногда эти варианты не влияют на бинарную совместимость с другим скомпилированным кодом, вы не можете рассчитывать на это с библиотеками Boost.
[7]Эта функция STLPort является устаревшей, потому что невозможно сделать ее прозрачной для пользователя; мы не рекомендуем ее.

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:30:09/0.018717050552368/1