Я пытался построить Библиотеки Boost C++ последние два часа и остановился без каких-либо результатов. Поскольку я новичок в C++, я не могу правильно выполнить сборку. Как я могу правильно его собрать с помощью Visual Studio 2008?
Мне нужно использовать инструмент BCP для извлечения подмножества библиотеки. Итак, мне нужно сначала построить BCP, верно? Как это сделать? Когда я попытался его построить, у меня появилась следующая ошибка
fatal error LNK1104: cannot open file 'libboost_filesystem-vc90-mt-gd-1_37.lib'.
Где я могу получить указанный выше файл библиотеки?





Во-первых, вам необходимо иметь правильные переменные среды PATH, INCLUDE и LIB в вашей командной оболочке. Для этого вызовите файл «vcvarsall.bat» (или аналогичный) с параметром:
vcvarsall.bat x86
Затем вам нужно создать bjam (вы также можете загрузить его со страницы Boost, но это почти так же быстро). Перейдите в папку tools\jam\src в Boost и введите:
build.bat
Должна появиться подпапка bin.ntx86, содержащая bjam.exe. Для удобства скопируйте его в основную папку Boost. Затем вы можете построить bcp. Зайдите в папку tools\bcp и введите:
..\..\bjam.exe --toolset=msvc
Вернувшись в основную папку Boost, вы можете создать любую библиотеку, которую хотите:
bjam toolset=msvc –-with-{library}
где {library} - одна из библиотек для сборки. Все собираемые библиотеки можно показать с помощью:
bjam –-show-libraries
Есть еще много параметров сборки bjam. Некоторые параметры с ключевыми словами, которые вы можете указать:
variant=debug|release
link=shared|static
threading=multi|single
Примером может быть:
bjam toolset=msvc –-with-filesystem threading=multi variant=debug stage
Для получения дополнительной информации посетите Страницы документации Boost.
Обновлено: обновлена ссылка на самую последнюю документацию по Boost.
Обновлено: исправлены параметры --with- {library} и –-show-libraries.
Это --with-{library} и --show-libraries. Два '-', а не один.
Спасибо KTC, в документации сказано то же самое. Я поправил ответ.
При использовании этих инструкций с повышением 1.46 возникают некоторые проблемы, включая отсутствие tools/jam и сбой сборки bcp.
Решение проблемы отсутствия инструментов / заклинивания (минимум 1,48); запустите bootstrap.bat, он скопирует для вас bjam в основную папку boost.
Обратите внимание, что вам не нужно создавать версии bcp для Windows из исходного кода - вы также можете загрузить двоичную версию из http://www.boostpro.com/download и пропустить все эти шаги.
(Или, по крайней мере, так обстоит дело в теории - я не пробовал; я только что нашел ту и эту страницу, когда искал готовую версию для Linux.)
Примечание: сайт требует регистрации, чтобы разрешить загрузку.
По-видимому, он также не предоставляет вам bcp по умолчанию ... вам в любом случае придется создавать его самостоятельно.
Бинарный файл Windows bcp можно скачать отсюда: netcologne.dl.sourceforge.net/project/boost/boost-binaries/…
Текущая версия Boost (1.50.0) использует Boost.Build. Новый рабочий процесс для создания bcp выглядит следующим образом:
из корневого каталога Boost введите:
bootstrap.bat
Затем, когда Boost.Build будет собран, введите:
b2 tools/bcp
Полученный двоичный файл находится в dist / bin / bcp.
Я сделал 3 шага: > bootstrap.bat > .\b2 > .\b2 tools/bcp И затем я смог его использовать: C: \ Users \ pedro \ dev-VS2008 \ boost_1_59_0> dist \ bin \ bcp boost \ tokenizer.hpp C: \ Users \ pedro \ dev-VS2008 \ MyProject \ boost_1_59_0
Я извлек источник: https://github.com/district10/cmake-bcp (вам не нужно настраивать BOOST, потому что весь исходный код уже включен).
В Linux cmake + make для сборки:
# cd source_dir
mkdir build && cd build
cmake ..
make
В Windows: CMake-GUI + Visual Studio для сборки. Нужна помощь? См. HOWTO: Win + CMake + Visual Studio 2010.
Мои исполняемые файлы:
Совет: если вы столкнетесь с проблемами связывания в Windows при использовании Boost, проверьте boost/config/auto_link.hpp, и вы все поймете. Чтобы решить эту проблему, вы можете просто закомментировать весь файл.
Престижность за предоставленные двоичные файлы! Сэкономил мне, наверное, 8 часов компиляции.
Кстати, время компиляции меньше 1 минуты. Это просто Boost bcp для компиляции, а не весь Boost.
Спасибо за отличный ответ! Это мне очень помогло.