![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Boost Getting Started on WindowsBoost , ,
|
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, которые имеют специальный код обнаружения версии) илиавтоматическое связываниевыйдет из строя.
Boost.Buildразместит все промежуточные файлы, которые он генерирует при встраивании вкаталог сборки. Если ваш корневой каталог Boost написан, этот шаг не является строго необходимым: по умолчанию Boost. Build создаст подкаталогbin.v2/для этой цели в вашем текущем рабочем каталоге.
Измените текущий каталог на корневой каталог 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
В частности, чтобы ограничить количество затраченного времени на строительство, вас могут заинтересовать:
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.
В процессе создания библиотек Boost можно ожидать увидеть некоторые сообщения, напечатанные на консоли. Они могут включать
Уведомления о конфигурации библиотеки Boost — например, библиотека Regex выводит сообщение об ICU при сборке без поддержки Unicode, и библиотека Python может быть пропущена без ошибки (но с уведомлением), если у вас нет установленного Python.
Сообщения от строительного инструмента, которые сообщают о количестве целей, которые были построены или пропущены. Не удивляйтесь, если эти цифры не имеют для вас никакого смысла; есть много целей на библиотеку.
Создайте сообщения действий, описывающие, что делает инструмент, которые выглядят примерно так:
toolset-name.c++long/path/to/file/being/built
Предупреждение составителя.
Единственные сообщения об ошибках, которые вы видите при создании Boost, должны быть связаны с поддержкой библиотекой IOStreams форматов zip и bzip2, как описаноздесь. Установите соответствующие пакеты разработки для libz и libbz2, если вам нужны эти функции. Другие ошибки при создании библиотек Boost вызывают беспокойство.
Если кажется, что система сборки не может найти компилятор и/или линкер, рассмотрите возможность настройки файлаuser-config.jam, как описаноздесь. Если это не ваша проблема или файлuser-config.jamне работает для вас, пожалуйста, задайте вопросы о настройке Boost для вашего компилятора наBoost. Постройте список рассылки.
Чтобы продемонстрировать связь с бинарной библиотекой Boost, мы используем следующую простую программу, которая извлекает строки темы из электронных писем. Он использует библиотекуBoost.Regex, которая имеет отдельно компилируемый двоичный компонент.
#include <boost/regex.hpp> #include <iostream> #include <string> int main() { std::string line; boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" ); while (std::cin) { std::getline(std::cin, line); boost::smatch matches; if (boost::regex_match(line, matches, pat)) std::cout << matches[2] << std::endl; } }
Существуют две основные проблемы, связанные со связью:
Auto-Linking
Большинство компиляторов и линкеров Windows имеют так называемую «поддержку автоматического связывания», что устраняет вторую проблему. Специальный код в файлах заголовка Boost обнаруживает параметры компилятора и использует эту информацию для кодирования имени правильной библиотеки в объектные файлы; линкер выбирает библиотеку с этим именем из каталогов, которые вы сказали ему искать.
The GCC toolchains (Cygwin and MinGW) are notable exceptions; GCC users should refer to the linking instructions for Unix variant OSes for the appropriate command-line options to use.
Начиная с проектатолько с заголовком, который мы создали ранее:
Например, мы можем компилировать и связывать вышеупомянутую программу из командной строки Visual C++, просто добавляя жирный текстниже в командную строку, которую мы использовали ранее. Повышенные двоичные файлы находятся вC:\ProgramFiles\boost\boost_1_62_0\lib:
cl /EHsc /I path\to\boost_1_62_0 example.cpp ^ /link /LIBPATH:C:\Program Files\boost\boost_1_62_0\lib
Note
Если, как и Visual C++, ваш компилятор поддерживает автоматическое связывание, вы, вероятно, можетеперейти к следующему шагу.
Чтобы выбрать правильный двоичный код для вашей конфигурации сборки, вам нужно знать, как называются двоичные файлы Boost. Каждое имя файла библиотеки состоит из общей последовательности элементов, которые описывают, как он был построен. Например,libboost_regex-vc71-mt-d-1_34.libможно разбить на следующие элементы:
ABI tag: encodes details that affect the library's interoperability with other compiled code. For each such feature, a single letter is added to the tag:
Key Use this library when: Boost.Build option s Статически связываясь со стандартной библиотекой C++ и библиотеками поддержки среды выполнения компилятора. runtime-link = статический г использование отладочных версий стандартных библиотек поддержки и среды выполнения. Runtime-debugging=on y Используя специальнуюотладку сборки Python. python-debugging=on d Создание отладочной версии вашего кода.6 Вариант = отладка p использовать стандартную библиотеку STLPort, а не стандартную библиотеку, поставляемую с компилятором. Stdlib = Stlport
For example, if you build a debug version of your code for use with debug versions of the static runtime library and the STLPort standard library in “native iostreams” mode, the tag would be: -sgdpn. If none of the above apply, the ABI tag is ommitted.
Чтобы проверить извлечение объекта, мы отфильтром следующий текстовый файл. Скопируйте его из браузера и сохраните какjayne.txt:
To: George Shmidlap From: Rita Marlowe Subject: Will Success Spoil Rock Hunter? --- See subject.
Теперь в окнекомандной строкивведите:
path\to\compiled\example < path\to\jayne.txt
Программа должна ответить на вопрос по электронной почте: "Will Success Spoil Rock Hunter? "
Это завершает ваше введение в 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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |