пятница, 9 августа 2013 г.

Установка boost для Visual Studio

Опишем, как установить библиотеку Boost для среды Visual Studio.


Шаг 1. Скачиваем исходные коды


Как правило, используется последняя версия библиотеки Boost. Если вам нужна более ранняя версия, то следует учитывать, что компилятор VS 2012 поддерживается с версии 1.52. Другими словами, вы не сможете использовать версию более раннюю чем 1.52 на VS 2012. Придётся установить более раннюю версию VS.

Ссылку на последнюю версию можно найти на странице http://www.boost.org/users/download. Обычно это ссылка ведёт на репозиторий вида http://sourceforge.net/projects/boost/files/boost/1.54.0/, откуда скачивается файл с именем boost_1_54_0.zip или другим в зависимости от версии.

Шаг 2. Компиляция


Я буду выполнять установку библиотеки в папку d:\Projects\Libs\boost_1_54_0\. Если у вас другая папка, то все команды изменяются соответствующим образом.

Распаковываем архив boost_1_54_0.zip в папку d:\Projects\Libs\boost_1_54_0\. Из командного интерпретатора выполним следующие команды:
cd /d d:\Projects\Libs\boost_1_54_0\
bootstrap.bat

Если требуется изменить конфигурацию библиотеки, то именно сейчас нужно изменить файл 'project-config.jam'. Если вы не знаете об этом, то оставляйте файл конфигурации как есть.

Далее запускаем процесс компиляции, введя команду b2.
Процесс компиляции длится около 20 минут. В конце отобразится информации о путях подключения библиотеки:
The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    D:/Projects/Libs/boost_1_54_0

The following directory should be added to linker library paths:

    D:\Projects\Libs\boost_1_54_0\stage\lib


Можно использовать утилиту BlueGo, которая позволяет упростить процесс компиляции.

Шаг 3. Создание символьной ссылки


Поскольку будут выходить новые версии библиотеки, то каждый раз изменять пути с D:\Projects\Libs\boost_1_54_0\stage\lib на D:\Projects\Libs\boost_1_55_0\stage\lib и т.д. будет несколько утомительно.

Я предлагаю использовать символьные ссылки, а точнее точки соединения для папок:
cd /d d:\Projects\Libs\
mklink /j boost boost_1_54_0
Далее я буду использовать D:\Projects\Libs\boost вместо D:\Projects\Libs\boost_1_54_0.

Шаг 4. Создание проекта в Visual Studio


Для примера http://www.boost.org/doc/libs/1_54_0/doc/html/date_time/examples.html будем использовать "Консольное приложение Win32".

Заходим в свойства проекта и изменяем:

В разделе "Каталоги VC++" для всех конфигураций:
  • в элемент "Каталоги включения" добавляем "d:\Projects\Libs\boost";
  • в элемент "Каталоги библиотек" добавляем "d:\Projects\Libs\boost\libs";


Далее аналогичным образом в разделе "Компоновщик > Общие" для всех конфигураций:
  • в элемент "Дополнительные каталоги библиотек" добавляем "d:\Projects\Libs\boost_1_54_0\stage\lib";
в разделе "Компоновщик > Ввод" для конфигурации Debug:
  • в элемент "Дополнительные зависимости" добавляем
    libboost_atomic-vc110-mt-gd-1_54.lib
    libboost_chrono-vc110-mt-gd-1_54.lib
    libboost_context-vc110-mt-gd-1_54.lib
    libboost_coroutine-vc110-mt-gd-1_54.lib
    libboost_date_time-vc110-mt-gd-1_54.lib
    libboost_exception-vc110-mt-gd-1_54.lib
    libboost_filesystem-vc110-mt-gd-1_54.lib
    libboost_graph-vc110-mt-gd-1_54.lib
    libboost_iostreams-vc110-mt-gd-1_54.lib
    libboost_locale-vc110-mt-gd-1_54.lib
    libboost_log-vc110-mt-gd-1_54.lib
    libboost_log_setup-vc110-mt-gd-1_54.lib
    libboost_math_c99-vc110-mt-gd-1_54.lib
    libboost_math_c99f-vc110-mt-gd-1_54.lib
    libboost_math_c99l-vc110-mt-gd-1_54.lib
    libboost_math_tr1-vc110-mt-gd-1_54.lib
    libboost_math_tr1f-vc110-mt-gd-1_54.lib
    libboost_math_tr1l-vc110-mt-gd-1_54.lib
    libboost_prg_exec_monitor-vc110-mt-gd-1_54.lib
    libboost_program_options-vc110-mt-gd-1_54.lib
    libboost_random-vc110-mt-gd-1_54.lib
    libboost_regex-vc110-mt-gd-1_54.lib
    libboost_serialization-vc110-mt-gd-1_54.lib
    libboost_signals-vc110-mt-gd-1_54.lib
    libboost_system-vc110-mt-gd-1_54.lib
    libboost_test_exec_monitor-vc110-mt-gd-1_54.lib
    libboost_thread-vc110-mt-gd-1_54.lib
    libboost_timer-vc110-mt-gd-1_54.lib
    libboost_unit_test_framework-vc110-mt-gd-1_54.lib
    libboost_wave-vc110-mt-gd-1_54.lib
    libboost_wserialization-vc110-mt-gd-1_54.lib
в разделе "Компоновщик > Ввод" для конфигурации Release:
  • в элемент "Дополнительные зависимости" добавляем
    libboost_atomic-vc110-mt-1_54.lib
    libboost_chrono-vc110-mt-1_54.lib
    libboost_context-vc110-mt-1_54.lib
    libboost_coroutine-vc110-mt-1_54.lib
    libboost_date_time-vc110-mt-1_54.lib
    libboost_exception-vc110-mt-1_54.lib
    libboost_filesystem-vc110-mt-1_54.lib
    libboost_graph-vc110-mt-1_54.lib
    libboost_iostreams-vc110-mt-1_54.lib
    libboost_locale-vc110-mt-1_54.lib
    libboost_log_setup-vc110-mt-1_54.lib
    libboost_log-vc110-mt-1_54.lib
    libboost_math_c99f-vc110-mt-1_54.lib
    libboost_math_c99l-vc110-mt-1_54.lib
    libboost_math_c99-vc110-mt-1_54.lib
    libboost_math_tr1f-vc110-mt-1_54.lib
    libboost_math_tr1l-vc110-mt-1_54.lib
    libboost_math_tr1-vc110-mt-1_54.lib
    libboost_prg_exec_monitor-vc110-mt-1_54.lib
    libboost_program_options-vc110-mt-1_54.lib
    libboost_random-vc110-mt-1_54.lib
    libboost_regex-vc110-mt-1_54.lib
    libboost_serialization-vc110-mt-1_54.lib
    libboost_signals-vc110-mt-1_54.lib
    libboost_system-vc110-mt-1_54.lib
    libboost_test_exec_monitor-vc110-mt-1_54.lib
    libboost_thread-vc110-mt-1_54.lib
    libboost_timer-vc110-mt-1_54.lib
    libboost_unit_test_framework-vc110-mt-1_54.lib
    libboost_wave-vc110-mt-1_54.lib
    libboost_wserialization-vc110-mt-1_54.lib
Внимание! Имена могут меняться в зависимости от версии и опций сборки. Для сборки Debug используйте маску *gd*, а для Release оставшиеся.

Теперь проект успешно компилируется:


Вот и всё.

См. также: http://www.boost.org/users/download/

3 комментария:

  1. Серьезность Код Описание Проект Файл Строка
    Ошибка LNK1181 не удается открыть входной файл "libboost_atomic-vc110-mt-1_54.lib" VStilsofteServer E:\Progect VisualStudio 2015\VStilsofteServer\VStilsofteServer\LINK
    Почему у меня выдает такую ошибку

    ОтветитьУдалить
    Ответы
    1. Необходимо добавить в Linker->Additional library directories
      путь к boost_x_xx\stage\lib, где x - версия буста

      Удалить