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

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

13 ответов


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

если вы используете только библиотеки заголовков, то все, что вам нужно сделать, это разархивировать загрузку boost и настроить переменные среды. Приведенная ниже инструкция устанавливает переменные среды только для 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 раздел, чтобы включить путь к исходным файлам boost.
  7. повторите шаги 3 - 6 для различных платформ по вашему выбору, если это необходимо.

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

  1. Unarchive последняя версия boost (1.47.0 по состоянию на запись) в каталог по вашему выбору (например,C:\boost_1_47_0).
  2. Запустите командную строку Visual Studio для выбранной вами платформы и перейдите туда, где находится boost.
  3. Run: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 раздел, чтобы включить путь к выходу библиотек boost. (По умолчанию для примера и инструкций выше будет C:\boost_1_47_0\stage\lib. Переименуйте и переместите каталог сначала, если вы хотите иметь x86 & x64 бок о бок (например,<BOOST_PATH>\lib\x86 & <BOOST_PATH>\lib\x64).
  3. повторите шаги 2 - 6 для различных платформ по вашему выбору, если необходимый.

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

  • импульс.Iostreams с помощью bzip2 фильтров
  • импульс.Iostreams с помощью zlib фильтров
  • импульс.MPI
  • импульс.Питон
  • импульс.Regex поддержка ICU

импульс.Фильтры iostreams с помощью bzip2:

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

импульс.Iostreams с помощью zlib фильтров

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

импульс.MPI

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

импульс.Питон

  1. установите дистрибутив Python, такой как ActiveState ActivePython. Убедитесь, что установка Python на вашем пути.
  2. для полной сборки 32-битной версии библиотеки требуется 32-битный Python, и аналогично для 64-битной версии. Если у вас установлено несколько версий по этой причине, вам нужно сообщить b2, где найти конкретную версию и когда использовать ее. Один из способов сделать это-отредактировать файл project-config.jam в каталоге <BOOST_PATH> это произошло в результате запуска bootstrap. Добавьте следующие две строки, соответствующие путям и версиям установки 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. Unarchive последняя версия ICU4C library (4.8 as of writing) исходный файл в каталог по вашему выбору (например,C:\icu4c-4_8).
  2. откройте решение Visual Studio в <ICU_PATH>\source\allinone.
  3. построить все для отладки и конфигурации выпуска для платформы по вашему выбору. Может быть проблема создание последних выпусков ICU4C с Visual Studio 2010, когда выходные данные для сборки debug & release находятся в одном каталоге (что является поведением по умолчанию). Возможно обходной путь-сделать сборку All (debug build say), а затем выполнить перестроение all во 2-й конфигурации (например, release build).
  4. если построение для x64, вам нужно будет запустить x64 OS, так как есть шаги после сборки, которые включают в себя запуск некоторых 64-битных приложений, которые он строит.
  5. при необходимости удалите исходный каталог, когда вы закончите.
  6. следуйте второму набору инструкций выше, чтобы построить boost, но добавьте опцию -sICU_PATH="C:\icu4c-4_8" при запуске b2 на шаге 5.

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

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

создайте 32-разрядные библиотеки

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

  1. распаковать Boost в новый каталог.
  2. запустите 32-разрядную командную строку MSVC и перейдите в каталог, где Boost был распакован.
  3. Run: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. Run:bootstrap
  4. Run: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.

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


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

  1. откройте менеджер недвижимости
  2. щелкните правой кнопкой мыши на узле проекта и выберите "Добавить новый лист свойств проекта".
  3. выберите местоположение и назовите свой лист недвижимости (например c:\mystuff\boost - ... реквизит)
  4. измените дополнительные папки Include и Lib на путь поиска.

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

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

EDIT (после редактирования из @jim-fred):

в результате


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

#include <tr1/memory>

using std::tr1::shared_ptr;

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

#include <memory>

using std::shared_ptr;

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

-в J2

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


этот поток был вокруг некоторое время, и я думал, что добавлю что-то о том, как построить Boost как можно быстрее на вашем конкретном оборудовании.

если у вас есть 4 или 6-core use-J5 или-j7 соответственно. Конечно, не стандартная сборка nor-j2, если у вас действительно нет двухъядерного ядра.

Я запускаю Sandy Bridge Extreme с запасом 3930K (6-core) на моей главной станции, но имею 2600k (4-core) на более старой резервной коробке, и тенденция заключается в том, что я получаю лучший импульс компиляции раз с 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-битная сборка занимает немного больше времени, мне нужно сделать то же сравнение для них и обновить.


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

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

вы сможете построить свой проект без каких-либо ошибок !


загрузить boost из: http://www.boost.org/users/download/ например, svn

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

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

мы создали bjam.exe в ("D:\boostTrunk") После этого : команда : набор инструментов bjam=MSVC-10.0 variant=debug, release threading=multi link=static (Это займет некоторое время ~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


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

  1. следуйте указаниям Мастера установки до его завершения.
  2. запустите visual studio.
  3. создать новый проект на C++
  4. открыть свойства проекта (можно найти, щелкнув правой кнопкой мыши имя проекта в обозревателе решений)
  5. в разделе "C / C++ > общие > дополнительные каталоги Include" добавьте путь, где boost корневой каталог. По умолчанию для моей версии 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, но я используя его с 2017 Visual Studio).

удачи!


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

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

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

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

я вставил в setenv для окружающей среды. Для сборки выпуска вышеуказанные шаги становятся:

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

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


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

1.скачать и распаковать Boost отсюда.

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

#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 задайте дополнительные каталоги Include:

Project Properties

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

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

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

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

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

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


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

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

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

Примечание: Если вы измените переменную среды, она не будет внезапно работать в открытом проекте VS. VS загружает переменные при запуске. Поэтому вам придется закрыть VS и снова открыть его.