Hatred's Log Place

DON'T PANIC!

Apr 18, 2013 - 2 minute read - Comments - programming c++

Build Boost on Windows with MinGW

Чисто заметка, без вдавания в детали.

Для начала нужно поставить MinGW и MSYS.

Сделать это можно двумя путями. Первый, это поставить и то и другое средствами mingw-get-inst: http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

Но там только GCC 4.7.2, а мне нужен был GCC 4.8 (где брать свежие сборки MinGW я уже ранее писал, замечу только, что брать нужно версию с поддержкой threads-posix и dwarf, если вдруг захочется использовать бинарные сборки Qt). MSYS поставил при помощи mingw-get (http://sourceforge.net/projects/mingw/files/Installer/mingw-get/, а можно и вручную, скачивая и распаковывая файлы отсюда: http://sourceforge.net/projects/mingw/files/MSYS/). Распаковываем его, к примеру, в C:<br/>msys, далее: cd C:
msys
bin mingw-get.exe update mingw-get.exe install msys

После этого MSYS будет расположен в C:<br/>msys<br/>msys<br/>1.0. Если потребуется ещё что-то от msys: mingw-get list вам в помощь.

Далее сборка Boost (у меня 1.53.0).

Распаковываем его, например в D:<br/>boost_1_53_0

Настраиваем пути до компилятора (делаем это из запущенной копии cmd): set PATH=c:
msys
msys
1.0
bin;c:
mingw
bin;%PATH%

Тут обращаю ваше внимание на один факт, за который разработчикам буста нужно малость по рукам настучать: буст соберётся хорошо только в случае, если MinGW поставлен в C:<br/>MinGW и ни как иначе!

После чего собираем bjam: cd D:
boost_1_53_0
tools
build
v2 bootstrap.bat gcc b2 –prefix=C:
boost install set PATH=%PATH%;C:
boost
bin

Теперь мы готовы собирать сам буст: cd D:
boost_1_53_0
bjam -j2 toolset=gcc –build-type=complete –prefix=C:
boost install

Вместо -j2 ставим нужное количество потоков сборки.

После продолжительной сборки буст будет расположен: * заголовки: C:<br/>boost<br/>include<br/>boost-1_53 * библиотеки: C:<br/>boost<br/>lib

И полезные параметры при сборке:

-Wno-unused-local-typedefs -DGLIBCXX_FORCE_NEW -D_WIN32_WINNT=0x0501 -DBOOST_THREAD_USE_LIB -DBOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN

Для совсем ленивых, напоминаю про альтернативную сборку MinGW от Стефана, в ней он уже обновил GCC до 4.8 и Boost до 1.53. Кстати, Стефан работает в Microsoft :laughing: