подключение boost и в частности regex

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Дикс, 10 Nov 2009.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    скачал буст, есть вопросы:

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

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

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

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    в корне лежит booststrap.bat . его запускаешь - должен появиться bjam.exe там же в корне. дальше батник в корне типа build.bat. содержимое типа такого

    Code:
    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 мож че изменилось, но не думаю.
     
    2 people like this.
  3. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Эмм а не проще ли для парсинга использовать библиотеку PCRE ? у меня с ней сложностей не возникло да и к исходной программе она добавляет всего несколько килобайт.
     
    _________________________
  4. Aag

    Aag Elder - Старейшина

    Joined:
    26 Jul 2005
    Messages:
    60
    Likes Received:
    19
    Reputations:
    8
    toolset=gcc для mingw

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

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    задает количество потов для сборки, вообще принято ставить два потока на процессор/ядро )
     
    1 person likes this.
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    bjam.

    да

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

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    да я его знаю, но когда в теме вообще ничего непонятно, гораздо легче начать с русского.
     
  8. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    поздно, уже скомпилил) подключаю
     
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    буст скомпилился, инклуды закинул в мингв
    но вот непонятно как подключить библиотеку к эклипсу

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


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

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

    Aag Elder - Старейшина

    Joined:
    26 Jul 2005
    Messages:
    60
    Likes Received:
    19
    Reputations:
    8
    так просто переименуй *.lib в *.a ; в windows, по-моему, такая команда
    Code:
    ren *.lib *.a
    
     
    1 person likes this.
  11. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    просто так нельзя переименовывать. если не заметили - в имени либ файла есть сокращения типа mt итп. mt - multithreaded версия. так же дебаг версии, и сингл тред. выбор либ файла должен осуществляться автоматом в зависимости от настроек компиляции проекта. Поэтому подключать надо не конкретные файлы, а всю папку с lib файлами, чтобы линкер и компиль могли получать нужные файлы.

    да, еще в файле не спроста указываются циферки версии. так что подлключать нада всю директорию.
     
    #11 Ra$cal, 14 Nov 2009
    Last edited: 14 Nov 2009
  12. Aag

    Aag Elder - Старейшина

    Joined:
    26 Jul 2005
    Messages:
    60
    Likes Received:
    19
    Reputations:
    8
    Изменяется просто расширение файла. Это из-за особенностей компилятора gcc, который думает, что библиотеки имеют расширение .a
    Указываешь флаг -lboost_regex-mgw34-mt.lib а ищется boost_regex-mgw34-mt.lib.a
    Указываешь флаг -lboost_regex-mgw34-mt ищется boost_regex-mgw34-mt.a
     
  13. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    ну если посмотреть на описание ошибки, которое дикс дал выше, то ищется как раз lib файл, а не "a'

     
  14. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Когда линкуешь либу ключем -l указывается только имя либы без префикса lib и без расширения a\lib, например либа libssl.a линкуется -lssl
     
  15. Aag

    Aag Elder - Старейшина

    Joined:
    26 Jul 2005
    Messages:
    60
    Likes Received:
    19
    Reputations:
    8
    Поясняю.
    Дело в том что указан флаг компилятора -l
    Который указывает компилятору gcc искать библиотеку "boost_regex-mgw34-mt.lib", и которая по мнению компилятора должна лежать в файле "boost_regex-mgw34-mt.lib.a"
     
  16. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Извиняюсь что поднимаю старую тему...
    Вопрос к тем кто компилировал regex(только его) с помощью bjam...
    Это нормально, что при компиляции regex'a параллельно также создаются и какие-то математические библиотеки?
    з.ы. и сколько примерно по времени должен создаваться этот regex? я на 5 мин комп оставил, прихожу, а он все ещё штампует...
    з.ы.ы. может я неправильно использую bjam?
    Code:
    bjam toolset=gcc regex stage
     
  17. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Понятно, спасибо за информацию.
    ... у меня 1 гиг, так что пойду отдохну часок другой от компа ^^ ...
     
  18. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Плохо смотрел доки...
    Чтобы скомпилить отдельный компонент нужно добавить ключ --with-libname
    Code:
    bjam toolset=gcc --with-regex stage
    http://www.boost.org/doc