Что такое хорошее пошаговое объяснение о том, как использовать библиотеку Boost в пустом проекте в Visual Studio?
c++
visual-studio-2010
boost
OlimilOops
источник
источник
Ответы:
Хотя ответ Нейта уже довольно хорош, я собираюсь расширить его более подробно для Visual Studio 2010 по запросу и включить информацию о компиляции в различных дополнительных компонентах, для которых требуются внешние библиотеки.
Если вы используете только библиотеки заголовков, то все, что вам нужно сделать, - это разархивировать ускоренную загрузку и настроить переменные среды. Приведенная ниже инструкция устанавливает переменные среды только для Visual Studio, а не для всей системы в целом. Обратите внимание, вы должны сделать это только один раз.
C:\boost_1_47_0
).Microsoft.Cpp.<Platform>.user
, и выберитеProperties
чтобы открыть страницу свойств для редактирования.VC++ Directories
слева.Include Directories
раздел, указав путь к исходным файлам буста.Если вы хотите использовать часть надстройки, требующую сборки, но не имеющую функций, требующих внешних зависимостей, то сборка будет достаточно простой.
C:\boost_1_47_0
).bootstrap.bat
для сборки b2.exe (ранее назывался bjam).Запустите b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Пойду гулять / смотреть фильм или 2 / ....
Library Directories
раздел, включив в него путь к вашим выходным библиотекам. (По умолчанию для примера и приведенных выше инструкций будетC:\boost_1_47_0\stage\lib
. Переименуйте и переместите каталог в первую очередь, если вы хотите иметь x86 и x64 рядом (например, для<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
).Если вы хотите дополнительные компоненты, то у вас есть больше работы. Эти:
Фильтры Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
при запуске b2 на шаге 5.Фильтры Boost.IOStreams Zlib
C:\zlib-1.2.5
).-sZLIB_SOURCE="C:\zlib-1.2.5"
при запуске b2 на шаге 5.Boost.MPI
project-config.jam
в каталоге,<BOOST_PATH>
который возник в результате запуска начальной загрузки. Добавьте строку, которая гласитusing mpi ;
(обратите внимание на пробел перед ';').Boost.Python
Для полной сборки 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.
Следуйте второму набору инструкций, чтобы построить надстройку.
Поддержка Boost.Regex ICU
C:\icu4c-4_8
).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
при запуске b2 на шаге 5.источник
Хотя инструкции на веб-сайте Boost полезны, здесь представлена сокращенная версия, в которой также собраны библиотеки x64.
Сборка 32-битных библиотек
Это устанавливает заголовочные файлы Boost
C:\Boost\include\boost-(version)
и 32-битные библиотеки вC:\Boost\lib\i386
. Обратите внимание, что расположение по умолчанию для библиотек такое,C:\Boost\lib
но вы захотите поместить их вi386
каталог, если планируете строить для нескольких архитектур.bootstrap
Запустить:
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
Добавьте
C:\Boost\include\boost-(version)
к своему пути включения.C:\Boost\lib\i386
к своему пути libs.Сборка 64-битных библиотек
Это устанавливает заголовочные файлы Boost
C:\Boost\include\boost-(version)
и 64-битные библиотеки вC:\Boost\lib\x64
. Обратите внимание, что расположение по умолчанию для библиотек такое,C:\Boost\lib
но вы захотите поместить их вx64
каталог, если планируете строить для нескольких архитектур.bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
к своему пути включения.C:\Boost\lib\x64
к своему пути libs.источник
Вы также можете попробовать -j% NUMBER_OF_PROCESSORS% в качестве аргумента, он будет использовать все ваши ядра. Делает вещи очень быстро на моем четырехъядерном ядре.
источник
Я мог бы порекомендовать следующий трюк: создать специальный
boost.props
файлЭта процедура имеет значение, что boost включен только в проекты, где вы хотите явно включить его. Когда у вас есть новый проект, который использует boost, выполните:
РЕДАКТИРОВАТЬ (после редактирования от @ jim-fred):
Полученный
boost.props
файл выглядит примерно так ...Он содержит пользовательский макрос для местоположения каталога 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, так что вы можете просто сказать, например:
По словам Джеймса, это также должно работать (в C ++ 0x):
источник
std
пространство имен, как и в стандарте C ++ 0x. (Я думаю, что они, вероятно, также находятся вstd::tr1
пространстве имен для обратной совместимости).Эта тема уже давно существует, и я подумал, что хотел бы добавить кое-что о том, КАК собрать 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)
-j6 на 6-ядерном (3 минуты и 2 секунды) (Win7 Ultimate x64) (Visual Studio 2013)
-j8 на 6-ядерном (3 минуты и 17 секунд) (Win7 Ultimate x64) (Visual Studio 2013)
конфиг
Я отмечаю, что 64-битная сборка занимает немного больше времени, мне нужно сделать то же сравнение и обновить.
источник
Также небольшое примечание: если вы хотите сократить время компиляции, вы можете добавить флаг
запустить две параллельные сборки одновременно. Это может уменьшить его до просмотра одного фильма;)
источник
-j2
, увеличит ценность вашего ответа.Скачать буст с: http://www.boost.org/users/download/ например svn
После этого: cmd -> перейти в каталог boost («D: \ boostTrunk» - где вы извлекаете или скачиваете и извлекаете пакет): команда: bootstrap
мы создали bjam.exe в ("D: \ boostTrunk"). После этого: команда: bjam toolset = msvc-10.0 вариант = отладка, освобождение потоков = multi link = static (это займет некоторое время ~ 20 мин.)
После этого: Откройте Visual Studio 2010 -> создать пустой проект -> перейдите в свойства проекта -> set:
Вставьте этот код и проверьте, работает ли он?
Ресурсы: https://www.youtube.com/watch?v=5AmwIwedTCM
источник
Вот как я смог использовать Boost:
Вы сможете построить свой проект без ошибок!
источник
Установщики Windows, расположенные здесь, работали отлично для меня. Я предпринял следующие шаги:
Удачи!
источник
Небольшое дополнение к очень информативному основному ответу KTC:
Если вы используете бесплатную Visual Studio c ++ 2010 Express и вам удалось получить ее для компиляции 64-битных двоичных файлов, и теперь вы хотите использовать ее для использования 64-битной версии библиотек Boost, вы можете получить 32- библиотеки битов (ваш пробег может меняться конечно, но на моей машине это печальный случай).
Я мог бы исправить это, используя следующее: между шагами, описанными выше как
Я вставил вызов 'setenv', чтобы установить среду. Для сборки выпуска следующие шаги становятся:
Я нашел эту информацию здесь: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
источник
Минималистский пример для начала работы в Visual Studio:
1. Скачать и разархивируйте Boost отсюда.
2. Создайте пустой проект Visual Studio, используя пример библиотеки повышения, которая не требует отдельной компиляции:
3. В свойствах проекта Visual Studio установите дополнительные каталоги включения:
Для очень простого примера:
Как установить Boost библиотеки в Visual Studio
Если вы не хотите использовать всю библиотеку Boost, просто подмножество:
Использование подмножества буст-библиотек в Windows
Если вы специально хотите узнать о библиотеках, которые требуют компиляции:
Как использовать скомпилированные библиотеки Boost в Windows
источник
Кроме того, есть кое-что, что я считаю очень полезным. Используйте переменные среды для ваших путей повышения. (Как установить переменные окружения в Windows, ссылка внизу для 7,8,10) Переменная BOOST_ROOT, кажется, больше не используется, и для нее задан корневой путь, в который вы распаковываете boost.
Затем в Properties, c ++, general, используйте каталоги Additional Include
$(BOOST_ROOT)
. Затем, если / когда вы перейдете на более новую версию библиотеки boost, вы можете обновить переменную среды, чтобы она указала на эту более новую версию. Как и в других ваших проектах, используйте boost, вам не придется обновлять «Дополнительные каталоги включения» для всех них.Вы также можете создать переменную BOOST_LIB и указать, где находятся библиотеки. Так же и для Linker-> Additional Library Directory, вам не придется обновлять проекты. У меня есть некоторые старые вещи, собранные с vs10, и новые вещи с vs14, поэтому оба варианта библиотеки Boost встроены в одну и ту же папку. Так что, если я переместлю проект с vs10 на vs14, мне не нужно менять пути повышения.
ПРИМЕЧАНИЕ. Если вы измените переменную среды, она не будет внезапно работать в открытом проекте VS. VS загружает переменные при запуске. Так что вам придется закрыть VS и снова открыть его.
источник