Использование Boost на Ubuntu - PullRequest
15 голосов
/ 11 мая 2009

Я слышал много хороших комментариев о Boost в прошлом и думал, что попробую. Поэтому я загрузил все необходимые пакеты из менеджера пакетов в Ubuntu 9.04. Теперь я не могу понять, как на самом деле использовать библиотеки darn.

Кто-нибудь знает хороший учебник по Boost, который проходит весь путь от Hello World до Advanced Topics, а также рассказывает, как компилировать программы с использованием g ++ на ubuntu?

Ответы [ 8 ]

17 голосов
/ 11 мая 2009

Согласовано; веб-сайт поддержки по большей части содержит хорошие учебники с разбивкой по библиотекам.

Что касается компиляции, хорошие 80% реализации библиотеки определены в заголовочных файлах, что делает компиляцию тривиальной. например, если вы хотите использовать shared_ptr, вы просто добавите

#include <boost/shared_ptr.hpp>

и скомпилируйте, как обычно. Нет необходимости добавлять пути к библиотекам в команду g ++ или указывать -llibboost. Пока каталог boost находится в вашем пути включения, все готово.

Из документации по бусту:

Единственными библиотеками, которые необходимо скомпилировать и связать, являются следующие: Единственные библиотеки Boost, которые должны быть собраны отдельно:

  • Boost.Filesystem
  • Boost.IOStreams
  • Boost.ProgramOptions
  • Boost.Python (перед сборкой и установкой см. Документацию по сборке Boost.Python)
  • 1024 * библиотека Boost.regex *
  • Boost.Serialization
  • Boost.Signals
  • Boost.Thread
  • Boost.Wave

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

  • Boost.DateTime имеет двоичный компонент, который необходим только в том случае, если вы используете его to_string / from_string или функции сериализации или если вы нацелены на Visual C ++ 6.x или Borland.
  • Boost.Graph также содержит двоичный компонент, который необходим только в том случае, если вы собираетесь анализировать файлы GraphViz.
  • Boost.Test можно использовать в режиме «только заголовок» или «отдельно скомпилированный», хотя для серьезного использования рекомендуется отдельная компиляция.

Итак, если вы используете одну из перечисленных библиотек, используйте руководство Getting Started , чтобы начать работу по компиляции и связыванию с Boost.

5 голосов
/ 11 мая 2009

На веб-сайте Boost есть несколько хороших учебных пособий, они просто скрыты.

3 голосов
/ 24 мая 2009

Используя Easypeasy 1.1 (для нетбуков), который основан на Ubuntu, я смог использовать Synaptic Package Manager для установки, я полагаю, libboost-dev. Затем просто добавив:

#include "boost/foreach.hpp"

Мне удалось заменить существующие строки в существующем приложении (в котором есть класс Ask, который не имеет ничего общего с boost):

for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii)
    std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl;

с:

BOOST_FOREACH (Ask* ii, ui)
     std::cout << ii->prompt() << ii->answer() << std::endl;

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

3 голосов
/ 11 мая 2009

Документация библиотеки представляет собой смешанный пакет. Некоторые из них хороши, но некоторые - скорее справочник, чем руководство. Лучшее руководство (некоторые из) библиотек Boost - книга Beyond the C ++ Standard Library . По крайней мере, введение дает один абзац описания многих библиотек. Оттуда вы можете решить, какая библиотека наиболее важна для ваших текущих потребностей, и, если она есть в книге, прочитать главу об этом или прочитать документацию на веб-сайте.

Если вы читаете по-немецки, есть хорошее онлайн-руководство . Google переводчик выполняет свою работу достаточно хорошо, чтобы такой человек, как я, мог понять это.

Кроме того, если у вас нет большого опыта работы с C ++, я бы начал с более простых библиотек (например, smart_ptr, кортеж, преобразование, токенизатор, регулярное выражение, date_time, test), прежде чем пробовать более сложные (связать, вариант любой) или действительно продвинутый (концепции, MPL, Fusion).

1 голос
/ 07 мая 2012

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

0 голосов
/ 07 мая 2012
0 голосов
/ 11 мая 2009

Boost не является ни языком программирования, ни структурой приложения - поскольку это просто набор библиотек, не существует такой вещи, как программа Boost 'Hello World'. Большинство библиотек в Boost можно использовать более или менее независимо, и они варьируются по размеру от одной функции до огромных библиотек, которые могут стоять отдельно.

Лучший способ познакомиться с Boost - это просто попробовать и поработать над ним, когда вы пишете новый код. Используйте smart_ptr всякий раз, когда можете; используйте MPL в следующий раз, когда вы захотите выполнить работу во время компиляции. В Boost много разнообразия, но вам, вероятно, стоит начать изучать раздел «Утилиты»; это самые легкие и наиболее часто используемые библиотеки.

0 голосов
/ 11 мая 2009

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

...