пятница, 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/

7 комментариев:

  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 - версия буста

      Удалить
  2. Чтобы не набирать библиотеки из папки вручную или через cmd, кому нужен список библиотек версии 1_68 для вставки во вкладку "Дополнительные библиотеки" новой версии - вот он:
    Debug (Активный):
    libboost_atomic-vc140-mt-gd-x32-1_68.lib
    libboost_atomic-vc140-mt-gd-x64-1_68.lib
    libboost_chrono-vc140-mt-gd-x32-1_68.lib
    libboost_chrono-vc140-mt-gd-x64-1_68.lib
    libboost_container-vc140-mt-gd-x32-1_68.lib
    libboost_container-vc140-mt-gd-x64-1_68.lib
    libboost_context-vc140-mt-gd-x32-1_68.lib
    libboost_context-vc140-mt-gd-x64-1_68.lib
    libboost_contract-vc140-mt-gd-x32-1_68.lib
    libboost_contract-vc140-mt-gd-x64-1_68.lib
    libboost_coroutine-vc140-mt-gd-x32-1_68.lib
    libboost_coroutine-vc140-mt-gd-x64-1_68.lib
    libboost_date_time-vc140-mt-gd-x32-1_68.lib
    libboost_date_time-vc140-mt-gd-x64-1_68.lib
    libboost_exception-vc140-mt-gd-x32-1_68.lib
    libboost_exception-vc140-mt-gd-x64-1_68.lib
    libboost_fiber-vc140-mt-gd-x32-1_68.lib
    libboost_fiber-vc140-mt-gd-x64-1_68.lib
    libboost_filesystem-vc140-mt-gd-x32-1_68.lib
    libboost_filesystem-vc140-mt-gd-x64-1_68.lib
    libboost_graph-vc140-mt-gd-x32-1_68.lib
    libboost_graph-vc140-mt-gd-x64-1_68.lib
    libboost_iostreams-vc140-mt-gd-x32-1_68.lib
    libboost_iostreams-vc140-mt-gd-x64-1_68.lib
    libboost_locale-vc140-mt-gd-x32-1_68.lib
    libboost_locale-vc140-mt-gd-x64-1_68.lib
    libboost_log_setup-vc140-mt-gd-x32-1_68.lib
    libboost_log_setup-vc140-mt-gd-x64-1_68.lib
    libboost_log-vc140-mt-gd-x32-1_68.lib
    libboost_log-vc140-mt-gd-x64-1_68.lib
    libboost_math_c99f-vc140-mt-gd-x32-1_68.lib
    libboost_math_c99f-vc140-mt-gd-x64-1_68.lib
    libboost_math_c99l-vc140-mt-gd-x32-1_68.lib
    libboost_math_c99l-vc140-mt-gd-x64-1_68.lib
    libboost_math_c99-vc140-mt-gd-x32-1_68.lib
    libboost_math_c99-vc140-mt-gd-x64-1_68.lib
    libboost_math_tr1f-vc140-mt-gd-x32-1_68.lib
    libboost_math_tr1f-vc140-mt-gd-x64-1_68.lib
    libboost_math_tr1l-vc140-mt-gd-x32-1_68.lib
    libboost_math_tr1l-vc140-mt-gd-x64-1_68.lib
    libboost_math_tr1-vc140-mt-gd-x32-1_68.lib
    libboost_math_tr1-vc140-mt-gd-x64-1_68.lib
    libboost_prg_exec_monitor-vc140-mt-gd-x32-1_68.lib
    libboost_prg_exec_monitor-vc140-mt-gd-x64-1_68.lib
    libboost_program_options-vc140-mt-gd-x32-1_68.lib
    libboost_program_options-vc140-mt-gd-x64-1_68.lib
    libboost_random-vc140-mt-gd-x32-1_68.lib
    libboost_random-vc140-mt-gd-x64-1_68.lib
    libboost_regex-vc140-mt-gd-x32-1_68.lib
    libboost_regex-vc140-mt-gd-x64-1_68.lib
    libboost_serialization-vc140-mt-gd-x32-1_68.lib
    libboost_serialization-vc140-mt-gd-x64-1_68.lib
    libboost_signals-vc140-mt-gd-x32-1_68.lib
    libboost_signals-vc140-mt-gd-x64-1_68.lib
    libboost_stacktrace_noop-vc140-mt-gd-x32-1_68.lib
    libboost_stacktrace_noop-vc140-mt-gd-x64-1_68.lib
    libboost_stacktrace_windbg_cached-vc140-mt-gd-x32-1_68.lib
    libboost_stacktrace_windbg_cached-vc140-mt-gd-x64-1_68.lib
    libboost_stacktrace_windbg-vc140-mt-gd-x32-1_68.lib
    libboost_stacktrace_windbg-vc140-mt-gd-x64-1_68.lib
    libboost_system-vc140-mt-gd-x32-1_68.lib
    libboost_system-vc140-mt-gd-x64-1_68.lib
    libboost_test_exec_monitor-vc140-mt-gd-x32-1_68.lib
    libboost_test_exec_monitor-vc140-mt-gd-x64-1_68.lib
    libboost_thread-vc140-mt-gd-x32-1_68.lib
    libboost_thread-vc140-mt-gd-x64-1_68.lib
    libboost_timer-vc140-mt-gd-x32-1_68.lib
    libboost_timer-vc140-mt-gd-x64-1_68.lib
    libboost_type_erasure-vc140-mt-gd-x32-1_68.lib
    libboost_type_erasure-vc140-mt-gd-x64-1_68.lib
    libboost_unit_test_framework-vc140-mt-gd-x32-1_68.lib
    libboost_unit_test_framework-vc140-mt-gd-x64-1_68.lib
    libboost_wave-vc140-mt-gd-x32-1_68.lib
    libboost_wave-vc140-mt-gd-x64-1_68.lib
    libboost_wserialization-vc140-mt-gd-x32-1_68.lib
    libboost_wserialization-vc140-mt-gd-x64-1_68.lib
    Это для версии 1_68. Список, как видите очень расширился!

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. Так как предоставленные автором имена библиотек тяжело модифицировать под имена библиотек новых версий libboost (так как в имена добавлена приставка x32 или x64, в именах библиотек автора их нет, следовательно в блокноте уже тяжело как-то изменять...), я выложил список новых библиотек. Я не хочу тут спамить, чтобы получить список для Release, зайдите в блокнот, скопируйте все библиотеки для Debug (Активный), я выкладывал в предыдущем комментарии ,перейдите в меню -> "Правка" -> "Заменить". В поле "Что" пишите "-gd" (без кавычек), поле "Чем" оставьте пустым. Потом нажимаете "Заменить всё". Получившийся список имён библиотек копируете в "Дополнительные библиотеки" в режиме Release.

    ОтветитьУдалить
  5. Kaktusenok: Установка Boost Для Visual Studio >>>>> Download Now

    >>>>> Download Full

    Kaktusenok: Установка Boost Для Visual Studio >>>>> Download LINK

    >>>>> Download Now

    Kaktusenok: Установка Boost Для Visual Studio >>>>> Download Full

    >>>>> Download LINK vI

    ОтветитьУдалить