PDA

Просмотр полной версии : подключение boost и в частности regex


Дикс
10.11.2009, 21:58
скачал буст, есть вопросы:

- не пойму как его скомпилить на mingw (винда xp)

- можно ли скомпилить/подключить только regex (больше пока ничего не надо)

- есть нормальный русский туториал по сборке и подключению буста к eclipse с mingw в винде?

Ra$cal
10.11.2009, 23:37
в корне лежит booststrap.bat . его запускаешь - должен появиться bjam.exe там же в корне. дальше батник в корне типа build.bat. содержимое типа такого

bjam --j2 --build-dir=I:\programming\boost_1_39_0\build_dir toolset=msvc --build-type=complete stage
pause

соответственно пути и тулсет меняешь на свои. j2 - два ядра вроде как. stage - куда компилить. type - какие либы компилить. советую полностью компилить, во первых меньше копания в доках, во вторых - потом если захочется что нить попробовать еще из буста - не придется опять вспоминать как компилить.

А подключать - добавь папку с хидерами в глобальные папки, которые по #include<> юзаются, и папку с либ файлами. В студии это пункт project directorys или как там оно.

ПС. компилил хзкогда версию 1.39. в 1.4 мож че изменилось, но не думаю.

Gar|k
11.11.2009, 00:02
Эмм а не проще ли для парсинга использовать библиотеку PCRE ? у меня с ней сложностей не возникло да и к исходной программе она добавляет всего несколько килобайт.

Aag
11.11.2009, 00:07
toolset=gcc для mingw

в tools/bcp лежит программа в исходниках и с документацией по "выкусыванию" нужной библиотеки из boost'a

razb
11.11.2009, 00:30
j2 - два ядра вроде как.
задает количество потов для сборки, вообще принято ставить два потока на процессор/ядро )

nerezus
11.11.2009, 04:05
- не пойму как его скомпилить на mingw (винда xp) bjam.

можно ли скомпилить/подключить только regex (больше пока ничего не надо) да

есть нормальный русский туториал по сборке и подключению буста к eclipse с mingw в винде? 1) Программист ОБЯЗАН знать английский.
2) Это очевидное действие. Так же, как и любую другую либу.

Дикс
11.11.2009, 08:15
Программист ОБЯЗАН знать английский
да я его знаю, но когда в теме вообще ничего непонятно, гораздо легче начать с русского.

Дикс
14.11.2009, 15:14
поздно, уже скомпилил) подключаю

Дикс
14.11.2009, 15:35
буст скомпилился, инклуды закинул в мингв
но вот непонятно как подключить библиотеку к эклипсу

в мингв/libs у меня все файлы *.a
а буст скомпилил *.dll и *.lib


либ не находит
ld.exe: cannot find -lboost_regex-mgw34-mt.lib

что делать? у меня винда
компилить как-то именно libboost_regex-mgw34-mt.a
или подключать libboost_regex-mgw34-mt.lib ?

Aag
14.11.2009, 15:42
в мингв/libs у меня все файлы *.a
а буст скомпилил *.dll и *.lib

либ не находит
ld.exe: cannot find -lboost_regex-mgw34-mt.lib

что делать? у меня винда
компилить как-то именно libboost_regex-mgw34-mt.a
или подключать libboost_regex-mgw34-mt.lib ?

так просто переименуй *.lib в *.a ; в windows, по-моему, такая команда

ren *.lib *.a

Ra$cal
14.11.2009, 16:47
просто так нельзя переименовывать. если не заметили - в имени либ файла есть сокращения типа mt итп. mt - multithreaded версия. так же дебаг версии, и сингл тред. выбор либ файла должен осуществляться автоматом в зависимости от настроек компиляции проекта. Поэтому подключать надо не конкретные файлы, а всю папку с lib файлами, чтобы линкер и компиль могли получать нужные файлы.

да, еще в файле не спроста указываются циферки версии. так что подлключать нада всю директорию.

Aag
14.11.2009, 17:11
просто так нельзя переименовывать. если не заметили - в имени либ файла есть сокращения типа mt итп. mt - multithreaded версия. так же дебаг версии, и сингл тред. выбор либ файла должен осуществляться автоматом в зависимости от настроек компиляции проекта. Поэтому подключать надо не конкретные файлы, а всю папку с lib файлами, чтобы линкер и компиль могли получать нужные файлы.

да, еще в файле не спроста указываются циферки версии. так что подлключать нада всю директорию.

Изменяется просто расширение файла. Это из-за особенностей компилятора gcc, который думает, что библиотеки имеют расширение .a
Указываешь флаг -lboost_regex-mgw34-mt.lib а ищется boost_regex-mgw34-mt.lib.a
Указываешь флаг -lboost_regex-mgw34-mt ищется boost_regex-mgw34-mt.a

Ra$cal
14.11.2009, 17:18
ну если посмотреть на описание ошибки, которое дикс дал выше, то ищется как раз lib файл, а не "a'

либ не находит
ld.exe: cannot find -lboost_regex-mgw34-mt.lib

razb
14.11.2009, 17:26
Когда линкуешь либу ключем -l указывается только имя либы без префикса lib и без расширения a\lib, например либа libssl.a линкуется -lssl

Aag
14.11.2009, 17:29
Поясняю.
Дело в том что указан флаг компилятора -l
Который указывает компилятору gcc искать библиотеку "boost_regex-mgw34-mt.lib", и которая по мнению компилятора должна лежать в файле "boost_regex-mgw34-mt.lib.a"

rudvil
24.03.2010, 15:30
Извиняюсь что поднимаю старую тему...
Вопрос к тем кто компилировал regex(только его) с помощью bjam...
Это нормально, что при компиляции regex'a параллельно также создаются и какие-то математические библиотеки?
з.ы. и сколько примерно по времени должен создаваться этот regex? я на 5 мин комп оставил, прихожу, а он все ещё штампует...
з.ы.ы. может я неправильно использую bjam?bjam toolset=gcc regex stage

m0Hze
24.03.2010, 15:49
Извиняюсь что поднимаю старую тему...
Вопрос к тем кто компилировал regex(только его) с помощью bjam...
Это нормально, что при компиляции regex'a параллельно также создаются и какие-то математические библиотеки?
з.ы. и сколько примерно по времени должен создаваться этот regex? я на 5 мин комп оставил, прихожу, а он все ещё штампует...
з.ы.ы. может я неправильно использую bjam?bjam toolset=gcc regex stage
Не знаю сколько один регексп,но все вместе минут 15-20, на 3гигах ОЗУ.
И у меня так и не получилось вытащить один регексп,все равно компилился весь,игнорировал команды.

rudvil
24.03.2010, 15:55
Понятно, спасибо за информацию.
... у меня 1 гиг, так что пойду отдохну часок другой от компа ^^ ...

rudvil
24.03.2010, 16:37
Плохо смотрел доки...
Чтобы скомпилить отдельный компонент нужно добавить ключ --with-libnamebjam toolset=gcc --with-regex stage
http://www.boost.org/doc (http://www.boost.org/doc/libs/1_42_0/more/getting_started/windows.html#invoke-bjam)
limiting which libraries get built with the --with-library-name or --without-library-name options