Как использовать Boost в Visual Studio 2010 - PullRequest
360 голосов
/ 13 апреля 2010

Что такое хорошее пошаговое объяснение о том, как использовать библиотеку Boost в пустом проекте в Visual Studio?

Ответы [ 13 ]

504 голосов
/ 16 апреля 2010

Хотя ответ Нейта уже довольно хорош, я собираюсь расширить его более конкретно для Visual Studio 2010 по запросу и включить информацию о компиляции в различные дополнительные компоненты, для которых требуются внешние библиотеки.

Если вы используете только библиотеки заголовков, то все, что вам нужно сделать, - это разархивировать ускоренную загрузку и настроить переменные среды. Приведенная ниже инструкция устанавливает переменные среды только для Visual Studio, а не для всей системы в целом. Обратите внимание, что вам нужно сделать это только один раз.

  1. Разархивируйте последнюю версию boost (1.47.0 на момент написания) в каталог по вашему выбору (например, C:\boost_1_47_0).
  2. Создайте новый пустой проект в Visual Studio.
  3. Откройте диспетчер свойств и разверните одну из конфигураций для выбранной вами платформы.
  4. Выберите и щелкните правой кнопкой мыши Microsoft.Cpp.<Platform>.user и выберите Properties, чтобы открыть страницу свойств для редактирования.
  5. Выберите VC++ Directories слева.
  6. Измените раздел Include Directories, указав путь к исходным файлам буста.
  7. При необходимости повторите шаги 3 - 6 для другой платформы по вашему выбору.

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

  1. Разархивируйте последнюю версию boost (1.47.0 на момент написания) в каталог по вашему выбору (например, C:\boost_1_47_0).
  2. Запустите командную строку Visual Studio для выбранной вами платформы и перейдите в нужное место.
  3. Выполнить: bootstrap.bat для сборки b2.exe (ранее назывался bjam).
  4. Прогон b2:

    • 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

Пойду гулять / смотреть фильм или 2 / ....

  1. Выполните шаги 2 - 6 из набора инструкций выше, чтобы установить переменные среды.
  2. Отредактируйте раздел Library Directories, указав путь к выходным данным ваших библиотек наддува. (По умолчанию для примера и приведенных выше инструкций будет C:\boost_1_47_0\stage\lib. Сначала переименуйте и переместите каталог, если вы хотите иметь x86 и x64 рядом (например, <BOOST_PATH>\lib\x86 & <BOOST_PATH>\lib\x64).
  3. При необходимости повторите шаги 2 - 6 для другой платформы по вашему выбору.

Если вам нужны дополнительные компоненты, то у вас есть больше работы. Это:

  • Boost.IOStreams Bzip2 фильтры
  • Boost.IOStreams Zlib filters
  • Boost.MPI
  • Boost.Python
  • Поддержка Boost.Regex ICU

Boost.IOStreams Bzip2 фильтры:

  1. Разархивируйте последнюю версию исходных файлов библиотеки bzip2 (на момент написания 1.0.6) в каталог по вашему выбору (например, C:\bzip2-1.0.6).
  2. Следуйте второму набору инструкций выше для создания надстройки, но добавьте опцию -sBZIP2_SOURCE="C:\bzip2-1.0.6" при запуске b2 на шаге 5.

Boost.IOStreams Zlib filters

  1. Разархивируйте последнюю версию исходных файлов библиотеки zlib (на момент написания 1.2.5) в каталог по вашему выбору (например, C:\zlib-1.2.5).
  2. Следуйте второму набору инструкций выше для создания надстройки, но добавьте опцию -sZLIB_SOURCE="C:\zlib-1.2.5" при запуске b2 на шаге 5.

Boost.MPI

  1. Установите дистрибутив MPI, такой как Microsoft Compute Cluster Pack.
  2. Выполните шаги 1 - 3 из второго набора инструкций, приведенных выше, для создания надстройки.
  3. Отредактируйте файл project-config.jam в каталоге <BOOST_PATH>, который возник в результате запуска начальной загрузки. Добавьте строку, которая гласит using mpi ; (обратите внимание на пробел перед ';').
  4. Выполните остальные шаги из второго набора инструкций выше, чтобы создать надстройку. Если автоопределение установки MPI завершится неудачно, вам нужно будет найти и изменить соответствующий файл сборки, чтобы найти MPI в нужном месте.

Boost.Python

  1. Установите дистрибутив Python, такой как ActivePtate ActivePython. Убедитесь, что установка Python находится в вашем PATH.
  2. Для полной сборки 32-битной версии библиотеки требуется 32-битный Python, а также для 64-битной версии.Если по этой причине у вас установлено несколько версий, вам нужно указать b2, где найти конкретную версию и когда использовать какую.Один из способов сделать это - отредактировать файл project-config.jam в каталоге <BOOST_PATH>, полученный в результате запуска начальной загрузки.Добавьте в следующие две строки корректировку в соответствии с вашими путями установки и версиями Python (обратите внимание на пробел перед ';').

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

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;

    Обратите внимание, что такая явная спецификация Python в настоящее время приводит к сбою сборки MPI.Таким образом, вам нужно будет сделать несколько отдельных сборок со спецификацией и без спецификации, чтобы построить все, если вы также строите MPI.

  3. Следуйте второму набору инструкций выше, чтобы построить boost.

Поддержка ICU Boost.Regex

  1. Разархивировать последнюю версию исходного файла библиотеки ICU4C (4.8 на момент записи) в каталог по вашему выбору (например, * 1145)*).
  2. Откройте решение Visual Studio в <ICU_PATH>\source\allinone.
  3. Build All для конфигурации отладки и выпуска для выбранной платформы.Может быть проблема при сборке последних выпусков ICU4C с Visual Studio 2010, когда выходные данные для сборки отладки и выпуска находятся в одном и том же каталоге (что является поведением по умолчанию).Возможный обходной путь - выполнить Build All (скажем, отладочную сборку), а затем выполнить Rebuild all во 2-й конфигурации (например, выпуск сборки).
  4. Если вы собираете x64, вам нужно будет запустить x64ОС, поскольку есть шаги после сборки, которые включают запуск некоторых 64-битных приложений, которые она создает.
  5. При необходимости удалите исходный каталог, когда закончите.
  6. Следуйте второму набору инструкций вышедля создания boost, но добавьте опцию -sICU_PATH="C:\icu4c-4_8" при запуске b2 на шаге 5.
151 голосов
/ 15 апреля 2010

Хотя инструкции на веб-сайте Boost полезны, здесь представлена ​​сокращенная версия, в которой также создаются библиотеки x64.

  • Это необходимо сделать только в том случае, если вы используете одну из библиотек, упомянутых в разделе 3 на странице инструкций. (Например, для использования Boost.Filesystem требуется компиляция.) Если вы не используете какой-либо из них, просто разархивируйте и перейдите.

Сборка 32-битных библиотек

При этом устанавливаются файлы заголовков Boost в C:\Boost\include\boost-(version) и 32-битные библиотеки в C:\Boost\lib\i386. Обратите внимание, что расположение по умолчанию для библиотек C:\Boost\lib, но вы захотите поместить их в каталог i386, если планируете строить для нескольких архитектур.

  1. Разархивируйте Boost в новый каталог.
  2. Запустите 32-разрядную командную строку MSVC и перейдите в каталог, куда был разархивирован Boost.
  3. Прогон: bootstrap
  4. Прогон: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

    • Для Visual Studio 2012 используйте toolset=msvc-11.0
    • Для Visual Studio 2010 используйте toolset=msvc-10.0
    • Для Visual Studio 2017 используйте toolset=msvc-14.1
  5. Добавьте C:\Boost\include\boost-(version) к вашему включаемому пути.

  6. Добавьте C:\Boost\lib\i386 к вашему пути libs.

Сборка 64-битных библиотек

При этом устанавливаются файлы заголовков Boost в C:\Boost\include\boost-(version) и 64-битные библиотеки в C:\Boost\lib\x64. Обратите внимание, что расположение по умолчанию для библиотек C:\Boost\lib, но вы захотите поместить их в каталог x64, если планируете строить для нескольких архитектур.

  1. Разархивируйте Boost в новый каталог.
  2. Запустите 64-разрядную командную строку MSVC и перейдите в каталог, куда был разархивирован Boost.
  3. Пробег: bootstrap
  4. Пробег: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • Для Visual Studio 2012 используйте toolset=msvc-11.0
    • Для Visual Studio 2010 используйте toolset=msvc-10.0
  5. Добавьте C:\Boost\include\boost-(version) к вашему включаемому пути.
  6. Добавьте C:\Boost\lib\x64 к вашему пути libs.
19 голосов
/ 18 августа 2010

Вы также можете попробовать -j% NUMBER_OF_PROCESSORS% в качестве аргумента, он будет использовать все ваши ядра. Делает все очень быстро на моем четырехъядерном ядре.

14 голосов
/ 23 июня 2011

Я мог бы порекомендовать следующий трюк: Создать специальный boost.props файл

  1. Открыть менеджер по недвижимости
  2. Щелкните правой кнопкой мыши узел вашего проекта и выберите «Добавить страницу свойств нового проекта».
  3. Выберите местоположение и назовите свой список свойств (например, c: \ mystuff \ boost.props)
  4. Измените дополнительные папки Include и Lib в пути поиска.

Эта процедура имеет значение, что boost включен только в проекты, где вы хотите явно включить его. Если у вас есть новый проект, который использует boost, выполните:

  1. Открыть менеджер по недвижимости.
  2. Щелкните правой кнопкой мыши узел проекта и выберите «Добавить существующую страницу свойств».
  3. Выберите лист свойств повышения.

РЕДАКТИРОВАТЬ (после редактирования из @ jim-fred):

Полученный файл boost.props выглядит примерно так ...

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
  </PropertyGroup>
  <PropertyGroup>
    <IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
    <LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
</Project>

Он содержит пользовательский макрос для местоположения каталога boost (в данном случае D: \ boost_1_53_0) и два других параметра: IncludePath и LibraryPath. Оператор #include <boost/thread.hpp> найдет файл thread.hpp в соответствующем каталоге (в этом случае D: \ boost_1_53_0 \ boost \ thread.hpp). Каталог 'stage \ lib \' может меняться в зависимости от установленного каталога.

Этот файл boost.props может находиться в каталоге D:\boost_1_53_0\.

13 голосов
/ 13 апреля 2010

Какие части Boost вам нужны? Многие вещи являются частью TR1, который поставляется с Visual Studio, так что вы можете просто сказать, например:

#include <tr1/memory>

using std::tr1::shared_ptr;

По словам Джеймса, это также должно работать (в C ++ 0x):

#include <memory>

using std::shared_ptr;
6 голосов
/ 06 ноября 2014

Эта тема уже давно существует, и я подумал, что хотел бы добавить кое-что о том, КАК построить Boost как можно быстрее на вашем конкретном оборудовании.

Если у вас 4-х или 6-ядерный процессор, используйте -j5 или -j7 соответственно. Конечно, не стандартная сборка и не -j2, если у вас действительно нет двухъядерного ядра.

Я использую Sandy Bridge Extreme со стандартной тактовой частотой 3930 КБ (6-ядерный) на моей основной станции, но имею более 2600 КБ (4-ядерный) на старой резервной копии, и тенденция в том, что я получаю лучшее время для ускоренной компиляции с N + 1 процессами сборки, где N - количество физических ядер. N + 2 достигает точки убывающей отдачи, и времена идут вверх.

Примечания: Гиперпоточность включена, 32 ГБ ОЗУ DDR3, Samsung 840 EVO SSD.

-j7 на 6-ядерном (2 минуты и 51 секунда) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 2
Seconds           : 51
Milliseconds      : 128
Ticks             : 1711281830
TotalDays         : 0.0019806502662037
TotalHours        : 0.0475356063888889
TotalMinutes      : 2.85213638333333
TotalSeconds      : 171.128183
TotalMilliseconds : 171128.183

-j6 на 6-ядерном (3 минуты и 2 секунды) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 2
Milliseconds      : 809
Ticks             : 1828093904
TotalDays         : 0.00211584942592593
TotalHours        : 0.0507803862222222
TotalMinutes      : 3.04682317333333
TotalSeconds      : 182.8093904
TotalMilliseconds : 182809.3904

-j8 на 6-ядерном (3 минуты и 17 секунд) (Win7 Ultimate x64) (Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 17
Milliseconds      : 652
Ticks             : 1976523915
TotalDays         : 0.00228764342013889
TotalHours        : 0.0549034420833333
TotalMinutes      : 3.294206525
TotalSeconds      : 197.6523915
TotalMilliseconds : 197652.3915

-j7 build on 6-core

Config

Building the Boost C++ Libraries.


Performing configuration checks

    - 32-bit                   : yes (cached)
    - arm                      : no  (cached)
    - mips1                    : no  (cached)
    - power                    : no  (cached)
    - sparc                    : no  (cached)
    - x86                      : yes (cached)
    - has_icu builds           : no  (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - zlib                     : no  (cached)
    - iconv (libc)             : no  (cached)
    - iconv (separate)         : no  (cached)
    - icu                      : no  (cached)
    - icu (lib64)              : no  (cached)
    - message-compiler         : yes (cached)
    - compiler-supports-ssse3  : yes (cached)
    - compiler-supports-avx2   : yes (cached)
    - gcc visibility           : no  (cached)
    - long double support      : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
    - zlib                     : no  (cached)

Я отмечаю, что 64-битная сборка занимает немного больше времени, мне нужно сделать то же самое сравнение с ними и обновить.

5 голосов
/ 22 июля 2013

Скачать буст с: http://www.boost.org/users/download/ например по svn

  • Windows -> черепаха (самый простой способ)

После этого: cmd -> перейти к каталогу boost («D: \ boostTrunk» - где Вы извлекаете или скачиваете и извлекаете пакет): команда: 1010 * самозагрузки *

мы создали bjam.exe в ("D: \ boostTrunk") После этого : команда: bjam toolset = вариант msvc-10.0 = отладка, освобождение потоков = многоканальная связь = статический (Это займет некоторое время ~ 20 минут.)

После этого: Откройте Visual Studio 2010 -> создать пустой проект -> перейти к свойствам проекта -> установить:

Project properties VS 2010

Вставьте этот код и проверьте, работает ли он?

#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/regex.hpp>

using namespace std;

struct Hello 
{
    Hello(){ 
        cout << "Hello constructor" << endl;
    }

    ~Hello(){
        cout << "Hello destructor" << endl;
        cin.get();
    }
};


int main(int argc, char**argv)
{
    //Boost regex, compiled library
    boost::regex regex("^(Hello|Bye) Boost$");
    boost::cmatch helloMatches;
    boost::regex_search("Hello Boost", helloMatches, regex);
    cout << "The word between () is: " << helloMatches[1] << endl;

    //Boost shared pointer, header only library
    boost::shared_ptr<Hello> sharedHello(new Hello);

    return 0;
}

Ресурсы: https://www.youtube.com/watch?v=5AmwIwedTCM

5 голосов
/ 16 мая 2010

Также небольшое примечание: если вы хотите сократить время компиляции, вы можете добавить флаг

-j2

для запуска двух параллельных сборок одновременно. Это может уменьшить его до просмотра одного фильма;)

4 голосов
/ 20 мая 2013

Вот как я смог использовать Boost:

  1. Загрузите и распакуйте zip-версию библиотек Boost.
  2. Запустите файл bootstrap.bat, а затем запустите bjam.exe.
  3. Подождите примерно 30 минут.
  4. Создание нового проекта в Visual Studio.
  5. Перейдите в project -> properties -> Linker -> General -> Дополнительные каталоги библиотек и добавьте в него каталог boost / stage / lib .
  6. Перейдите в проект -> свойства -> C / C ++ -> Общие -> Дополнительные включаемые каталоги и добавьте в него boost каталог.

Вы сможете построить свой проект без ошибок!

3 голосов
/ 28 февраля 2017

Установщики Windows, расположенные здесь , отлично работали для меня. Я предпринял следующие шаги:

  1. Следуйте указаниям мастера установки до завершения.
  2. Запуск визуальной студии.
  3. Создать новый проект C ++
  4. Открыть свойства проекта (можно найти, щелкнув правой кнопкой мыши имя проекта в обозревателе решений)
  5. В разделе «C / C ++> Общие> Дополнительные каталоги включения» добавьте путь для увеличения корневого каталога. По умолчанию для моей версии было C: \ local \ boost_1_63_0. Число после «boost» является версией boost.
  6. В свойствах проекта в разделе «Компоновщик> Дополнительные каталоги библиотек» добавить каталог для файлов библиотек. По умолчанию для моей версии было C: \ local \ boost_1_63_0 \ lib64-msvc-14.0. Число после «lib» относится к цели сборки (32-разрядной или 64-разрядной в Visual Studio), а число после «msvc» относится к версии Visual Studio (14.0 относится к Visual Studio 2015, но используя его с Visual Studio 2017).

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...