воскресенье, 10 января 2016 г.

Библиотека Boost и Qt


На днях столкнулся с необходимостью использования библиотеки Boost в Qt. В Linux все оказалось просто, а вот в Windows пришлось компилировать библиотеку для её использования совместно с Qt и компилятором MinGW.
Поэтому делюсь опытом. В принципе, весь процесс описан в разделе Getting started. Но для таких как я, сделал краткое руководство :)



1) Начнем с того, что у вас должен быть установлен Qt (с компилятором MinGW или MSVC). У меня это Qt 5.5.1.
2) Качаем и распаковываем библиотеку Boost с официального сайта (на момент написания заметки последняя версия - 1.60.0): http://www.boost.org/
3) Открываем командную строку (win+r и вводим cmd) и переходим в корневую папку библиотеки (например, D:\boost_1_60_0).

Далее, если вы используете MSVC, то все просто:
4а) Запускаем bootstrap и ждем когда все закончится.
5а) В итоге должен появиться фаил b2.exe, который из командной строки мы и должны запустить со следующими аргументами:
b2 --build-type=complete stage --with-filesystem --with-system --with-iostreams
где --build-type=complete говорит о том, что надо откомпилировать все возможные варианты библиотек,
stage - поместит откомпилированные версии библиотек в папку stage\lib (например, D:\boost_1_60_0\stage\lib)
--with-filesystem и др. - говорят о том, что надо откомпилировать только эти библиотеки, что сильно экономит время. Но при желании эти аргументы можно пропустить.
Вот и все!)

Если вы используете компилятор MinGW, то последовательность такая:
4b) Из корневой папки переходим в папку tools\build. Там так же лежит фаил bootstrap. Перед тем как запустить bootstrap необходимо указать место расположения компилятора:
5b) В командную строку вводим следующее (как пример):
set MINGW_ROOT_DIRECTORY=D:\Qt\Qt5.5.1\Tools\mingw492_32
где собственно и должен быть указан путь к компилятору.
и
set path=%MINGW_ROOT_DIRECTORY%\bin;%path%
В папке bin лежит наш заветный gcc.exe.
6b) Далее запускаем bootstrap со следующим аргументом (теперь он знает, где расположен компилятор):
bootstrap mingw
7b) В итоге должен появиться фаил b2.exeв папке \tools\build. Обязательно переходим в корневую папку библиотеки Boost и запускаем от туда фаил b2.exe:
tools\build\b2 toolset=gcc --build-type=complete stage --with-filesystem --with-system --with-iostreams
где добавился аргумент toolset=gcc

После того как всё откомпилируется, можно использовать библиотеку. В моем случае имеются библиотеки в папке D:/Qt/boost_1_60_0/stage/lib:
libboost_filesystem-mgw49-1_60
libboost_filesystem-mgw49-d-1_60
libboost_filesystem-mgw49-mt-1_60
libboost_filesystem-mgw49-mt-d-1_60
и т.д.
где mt - multithreading
d - debug

Осталось добавить библиотеки в фаил проекта Qt (pro файл):
win32 {
BOOSTPATH = D:/Qt/boost_1_60_0
BOOSTVER = 1_60
MINGWVER = 49

INCLUDEPATH += $$BOOSTPATH
LIBS += -L$$BOOSTPATH/stage/lib \
-llibboost_filesystem-mgw$$MINGWVER-mt-$$BOOSTVER \
-llibboost_system-mgw$$MINGWVER-mt-$$BOOSTVER \
-llibboost_iostreams-mgw$$MINGWVER-mt-$$BOOSTVER
}

unix {
LIBS += -lboost_filesystem \
-lboost_system \
-lboost_iostreams

Комментариев нет:

Отправить комментарий