Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   подключение boost и в частности regex (https://forum.antichat.xyz/showthread.php?t=155566)

Дикс 10.11.2009 21:58

подключение boost и в частности regex
 
скачал буст, есть вопросы:

- не пойму как его скомпилить на 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

Цитата:

Сообщение от Ra$cal
просто так нельзя переименовывать. если не заметили - в имени либ файла есть сокращения типа 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

Цитата:

Сообщение от rudvil
Извиняюсь что поднимаю старую тему...
Вопрос к тем кто компилировал 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-libname
Код:

bjam toolset=gcc --with-regex stage
http://www.boost.org/doc
Цитата:

Сообщение от boost
limiting which libraries get built with the --with-library-name or --without-library-name options



Время: 08:59