Меню Рубрики

Установка boost для visual studio 2010

kaktusenok

пятница, 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 или другим в зависимости от версии.

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

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

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

Далее запускаем процесс компиляции, введя команду b2.
Процесс компиляции длится около 20 минут. В конце отобразится информации о путях подключения библиотеки:

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

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

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

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

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

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

В разделе «Каталоги 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 оставшиеся.

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

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

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

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

Чтобы не набирать библиотеки из папки вручную или через 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. Список, как видите очень расширился!

Читайте также:  Установка прицепного устройства на прадо 150

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

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

источник

How to use Boost in Visual Studio 2010

What is a good step by step explanation on how to use the Boost library in an empty project in Visual Studio?

13 Answers 13

While Nate’s answer is pretty good already, I’m going to expand on it more specifically for Visual Studio 2010 as requested, and include information on compiling in the various optional components which requires external libraries.

If you are using headers only libraries, then all you need to do is to unarchive the boost download and set up the environment variables. The instruction below set the environment variables for Visual Studio only, and not across the system as a whole. Note you only have to do it once.

  1. Unarchive the latest version of boost (1.47.0 as of writing) into a directory of your choice (e.g. C:\boost_1_47_0 ).
  2. Create a new empty project in Visual Studio.
  3. Open the Property Manager and expand one of the configuration for the platform of your choice.
  4. Select & right click Microsoft.Cpp.

.user , and select Properties to open the Property Page for edit.

  • Select VC++ Directories on the left.
  • Edit the Include Directories section to include the path to your boost source files.
  • Repeat steps 3 — 6 for different platform of your choice if needed.
  • If you want to use the part of boost that require building, but none of the features that requires external dependencies, then building it is fairly simple.

    1. Unarchive the latest version of boost (1.47.0 as of writing) into a directory of your choice (e.g. C:\boost_1_47_0 ).
    2. Start the Visual Studio Command Prompt for the platform of your choice and navigate to where boost is.
    3. Run: bootstrap.bat to build b2.exe (previously named bjam).
    • Win32: b2 —toolset=msvc-10.0 —build-type=complete stage ;
    • x64: b2 —toolset=msvc-10.0 —build-type=complete architecture=x86 address-model=64 stage

    Go for a walk / watch a movie or 2 / .

    1. Go through steps 2 — 6 from the set of instruction above to set the environment variables.
    2. Edit the Library Directories section to include the path to your boost libraries output. (The default for the example and instructions above would be C:\boost_1_47_0\stage\lib . Rename and move the directory first if you want to have x86 & x64 side by side (such as to \lib\x86 & \lib\x64 ).
    3. Repeat steps 2 — 6 for different platform of your choice if needed.

    If you want the optional components, then you have more work to do. These are:

    • Boost.IOStreams Bzip2 filters
    • Boost.IOStreams Zlib filters
    • Boost.MPI
    • Boost.Python
    • Boost.Regex ICU support

    Boost.IOStreams Bzip2 filters:

    1. Unarchive the latest version of bzip2 library (1.0.6 as of writing) source files into a directory of your choice (e.g. C:\bzip2-1.0.6 ).
    2. Follow the second set of instructions above to build boost, but add in the option -sBZIP2_SOURCE=»C:\bzip2-1.0.6″ when running b2 in step 5.

    Boost.IOStreams Zlib filters

    1. Unarchive the latest version of zlib library (1.2.5 as of writing) source files into a directory of your choice (e.g. C:\zlib-1.2.5 ).
    2. Follow the second set of instructions above to build boost, but add in the option -sZLIB_SOURCE=»C:\zlib-1.2.5″ when running b2 in step 5.
    1. Install a MPI distribution such as Microsoft Compute Cluster Pack.
    2. Follow steps 1 — 3 from the second set of instructions above to build boost.
    3. Edit the file project-config.jam in the directory that resulted from running bootstrap. Add in a line that read using mpi ; (note the space before the ‘;’).
    4. Follow the rest of the steps from the second set of instructions above to build boost. If auto-detection of the MPI installation fail, then you’ll need to look for and modify the appropriate build file to look for MPI in the right place.

      Install a Python distribution such as ActiveState’s ActivePython. Make sure the Python installation is in your PATH.

    To completely built the 32-bits version of the library requires 32-bits Python, and similarly for the 64-bits version. If you have multiple versions installed for such reason, you’ll need to tell b2 where to find specific version and when to use which one. One way to do that would be to edit the file project-config.jam in the directory that resulted from running bootstrap. Add in the following two lines adjusting as appropriate for your Python installation paths & versions (note the space before the ‘;’).

    using python : 2.6 : C:\\Python\\Python26\\python ;

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : 64 ;

    Do note that such explicit Python specification currently cause MPI build to fail. So you’ll need to do some separate building with and without specification to build everything if you’re building MPI as well.

    Follow the second set of instructions above to build boost.

    источник

    Как установить библиотеку boost?

    Доброго времени суток. Нужна помощь!

    Хочу установить библиотеку boost. Во всех туториалах люди заходят в консольку Visual Studio Command Prompt (2010). Но проблема в том, что я не могу ее найти! Искать в винде пробовал — не нашел.

    У меня экспресс-версия! Дело в этом?

    3 ответа 3

    Библиотека boost — это набор частично компилируемых исходных кодов. В некоторых случаях ничего не нужно собирать, достаточно скачать с официального сайта дистрибутив, разместить в удобном месте и в настройках проекта указать пути.

    У меня в специальной папке, где я храню библиотеки многоразового использования, лежит подпапка boost_1_56_0 . Рядом с нею еще ряд других более старых версий этой библиотеки.

    В переменные среды (в windows это там же, где и PATH) я заношу переменную BOOST_ROOT , которая указывает на последнюю сборку. Т.е. как появится новая, я создам папку boost_1_XX_Y и переназначу эту переменную.

    В настройках любых проектов мне достаточно указать $(BOOST_ROOT)\include — для доступа к headers, и $(BOOST_ROOT)\stage\lib32 / $(BOOST_ROOT)\stage\lib64 для доступа к конкретным библиотекам, нужной мне разрядности.

    Поскольку boost автоматически выдает имена собираемым библиотекам, с учетом компиляторов, которыми они собираются, даже если у Вас разные компиляторы, бинарники удобно сбрасывать в одну папку, как указано выше.

    • С Intel Compiler у Вас получатся libboost_name-iw-type-version.lib .
    • С Visual Studio у Вас получатся libboost_name-vcXX-type-version.lib , где XX — версия компилятора visual studio (не студии, а именно компилятора).
    • С MinGW с gcc у Вас получится libboost_name-gcc-type-version.lib , если мне не изменяет память.

    При этом для сборки библиотек, которые необходимо собирать, необходимо выполнить одни и те же действия в консоли:

    • Для Intel Compiler это будет в соответствующем Command Prompt.
    • Для Visual Studio это будет в соответствующем Command Prompt.
    • Для MinGW это будет в обычной консоли, если, конечно, путь к bin в MinGW у Вас добавлен в переменную среды PATH.

    Действия надо выполнить одни и те же. Сначала bootstrap.bat , а потом b2 —help .

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

    Строчка будет выглядеть так:

    b2 параметр1 параметр2 параметр3 .

    • toolset — его стоит указать, чтобы сборка производилась конкретным компилятором (gcc, intel, visual studio), причем можно указать и версию компилятора.
    • variant, вид сборки, debug или release. Для разработки Вам понадобятся оба варианта.
    • link — Вы выбираете, будет Ваш бинарный код обращаться в dll или содержать «в себе» все используемые алгоритмы.
    • threading — честно говоря, плохо понимаю смысл этой директивы и всегда указываю multi. Редко мы пишем однопоточные приложения.
    • runtime-link — то же, что и link, только для рантайма.
    • address-model — параметр не указан в хелпе, но помогает выбрать архитектуру собираемых библиотек.
    • stage/install, отличаются лишь тем, что install позволит «выгрузить» только нужное в отдельную папку, stage собирает всё туда, где оно есть. Если Вы не увлекаетесь изменениями исходников boost, stage Вам вполне подойдет.

    В итоге получается что-то вроде вот такого:

    Для дебага в x32 и такого:

    Ждете около 40 минут, радуетесь результату. В случае проблем — гуглите, скорее всего уже тысячи людей сталкивались с Вашей проблемой, и ее решение — невнимательность или какие-то специфические настройки чего-нибудь. Например, при сборке boost python вылезает много warning-ов на MinGW из-за конфликта хедеров, подобные вещи можно разрулить в частном порядке.

    Потратив 2 часа на то, чтобы один раз в этом разобраться, Вы никогда не будете зависеть ни от каких сторонних сборок, будете понимать, где у Вас что лежит, кто туда положил и т.п. В общем, это полезно.

    источник

    Добавить комментарий

    Adblock
    detector