Как использовать Boost в Visual Studio 2010

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

13 ответов

Решение

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

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

  1. Разархивируйте последнюю версию boost (1.47.0 на момент написания) в каталог по вашему выбору (например, C:\boost_1_47_0).
  2. Создайте новый пустой проект в Visual Studio.
  3. Откройте Property Manager и разверните одну из конфигураций для платформы по вашему выбору.
  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
  • 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

  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.Regex ICU

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

Хотя инструкции на веб-сайте 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 к твоему пути.

Сборка 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 к твоему пути.

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

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

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

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

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

РЕДАКТИРОВАТЬ (после редактирования от @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\ каталог.

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

#include <tr1/memory>

using std::tr1::shared_ptr;

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

#include <memory>

using std::shared_ptr;

Эта тема уже давно существует, и я подумал, что хотел бы добавить кое-что о том, КАК собрать 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 сборка на 6 ядрах

конфиг

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-битная сборка занимает немного больше времени, мне нужно сделать то же самое сравнение с ними и обновить.

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

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

После этого: cmd -> перейти в каталог boost ("D:\boostTrunk" - где вы извлекаете или скачиваете и извлекаете пакет): команда:bootstrap

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

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

Свойства проекта 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

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

-j2

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

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

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

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

Установщики 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).

Удачи!

Небольшое дополнение к очень информативному основному ответу KTC:

Если вы используете бесплатную Visual Studio C++ 2010 Express и вам удалось получить ее для компиляции 64-битных двоичных файлов, и теперь вы хотите использовать ее для использования 64-битной версии библиотек Boost, вы можете получить 32- библиотеки битов (ваш пробег может меняться, конечно, но на моей машине это печальный случай).

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

  1. Запустите 32-разрядную командную строку MSVC и перейдите в каталог, куда был разархивирован Boost.
  2. Run: начальная загрузка

Я вставил вызов 'setenv', чтобы установить среду. Для сборки релиза вышеуказанные шаги становятся:

  1. Запустите 32-разрядную командную строку MSVC и перейдите в каталог, куда был разархивирован Boost.
  2. Выполните: "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ setenv.cmd" / Release / x64
  3. Run: начальная загрузка

Я нашел эту информацию здесь: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html

Минималистский пример начала работы в Visual Studio:

1. Загрузите и разархивируйте Boost отсюда.

2. Создайте пустой проект Visual Studio, используя пример библиотеки повышения, которая не требует отдельной компиляции:

#include <iostream>
#include <boost/format.hpp>

using namespace std;  
using namespace boost;  

int main()  
{  
    unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };  

    cout << format("%02X-%02X-%02X-%02X-%02X")  
            % arr[0]  
            % arr[1]  
            % arr[2]  
            % arr[3]  
            % arr[4]  
         << endl;  
}  

3.В свойствах вашего проекта Visual Studio установите дополнительные каталоги включения:

Свойства проекта

Для очень простого примера:

Как установить Boost библиотеки в Visual Studio

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

Использование подмножества буст-библиотек в Windows

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

Как использовать скомпилированные библиотеки Boost в Windows

Кроме того, есть кое-что, что я считаю очень полезным. Используйте переменные окружения для ваших путей повышения. (Как установить переменные окружения в windows, ссылка внизу для 7,8,10) Переменная BOOST_ROOT, кажется, больше не используется, и для нее задан корневой путь, в который вы распаковываете boost.

Затем в свойствах, C++, вообще, дополнительные каталоги включают использование $(BOOST_ROOT), Затем, если / когда вы перейдете на более новую версию библиотеки boost, вы можете обновить переменную среды, указав на эту более новую версию. Как и в других ваших проектах, используйте boost, вам не придется обновлять "Дополнительные каталоги включения" для всех них.

Вы также можете создать переменную BOOST_LIB и указать ей, где находятся библиотеки. Так же и для Linker->Additional Library Directory, вам не придется обновлять проекты. У меня есть некоторые старые вещи, созданные с vs10, и новые вещи с vs14, так что оба варианта библиотеки Boost встроены в одну и ту же папку. Поэтому, если я перенесу проект с vs10 на vs14, мне не нужно менять пути повышения.

ПРИМЕЧАНИЕ. Если вы измените переменную среды, она не будет внезапно работать в открытом проекте VS. VS загружает переменные при запуске. Так что вам придется закрыть VS и снова открыть его.

Другие вопросы по тегам