Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ boost _ сборка буста...

Автор: LuckLess 17.4.2008, 11:36

захожу я в каталог serialization... пишу
bjam.exe --v2 --toolset=msvc
получаю файл..
boost_serialization-vc80-mt-gd-1_35.lib
а линковщик студии ругается.. хочет
libboost_serialization-vc80-mt-gd-1_35.lib
:blink: :blink:

Автор: Andrew Selivanov 17.4.2008, 11:44

Command line для линковки в студию! :)
(Его можно посмотреть где то в свойствах проекта в разделе линковки)

Автор: LuckLess 17.4.2008, 13:17

Цитата(Andrew Selivanov @ 17.4.2008, 12:44) *
Command line для линковки в студию! :)
(Его можно посмотреть где то в свойствах проекта в разделе линковки)

а нету никакого command line для линковки. я просто указал студии дирректорию где лежат либы..
так что в command line то что там прописано стандартно..

Цитата
/OUT:"C:\WorkDir\RsForms\TestBoost\Debug\TestBoost.exe" /NOLOGO /MANIFEST /MANIFESTFILE:"Debug\TestBoost.exe.intermediate.manifest" /DEBUG /PDB:"c:\WorkDir\RsForms\TestBoost\debug\TestBoost.pdb" /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

Автор: Tonal 17.4.2008, 13:28

Для VC в Boost-е работает автолинковка через #pragma comment
Судя по всему, несовместимые опции сборки. Например, ты собираешь проект в статике, а bjam по умолчанию генерит библиотеки для динамики...

Автор: LuckLess 17.4.2008, 13:52

Tonal
похоже на то.. да.. как bjam - у скачать что я хочу в статике собраться..?

Автор: LuckLess 17.4.2008, 14:39

в общем нашел я в комплекте sln для студии 7-1.. открыл.. переименовал названия с 7-1 на 80.. собал.. и вроде работает.. :p

Автор: Andrew Selivanov 17.4.2008, 14:43

Цитата(LuckLess @ 17.4.2008, 15:39) *
в общем нашел я в комплекте sln для студии 7-1.. открыл.. переименовал названия с 7-1 на 80.. собал.. и вроде работает.. :p

А, понял - просто ты собираешь для динамических библиотек попробуй
#define BOOST_ALL_DYN_LINK или собирать с link=static

Автор: LuckLess 17.4.2008, 15:43

Цитата
А, понял - просто ты собираешь для динамических библиотек попробуй
#define BOOST_ALL_DYN_LINK или собирать с link=static

bjam.exe --v2 --toolset=msvc --link=static
так?)) чтото не помогло..

Автор: Andrew Selivanov 17.4.2008, 15:56

Цитата(LuckLess @ 17.4.2008, 16:43) *
Цитата
А, понял - просто ты собираешь для динамических библиотек попробуй
#define BOOST_ALL_DYN_LINK или собирать с link=static

bjam.exe --v2 --toolset=msvc --link=static
так?)) чтото не помогло..

а вот так?
-sBUILD="release debug <threading>multi/single <runtime-link>static/dynamic"

Автор: LuckLess 18.4.2008, 10:08

Цитата
-sBUILD="release debug <threading>multi/single <runtime-link>static/dynamic"

не помогло. собирает тоже самое. все, кстати в папке debug.. блин.. нафиг этот bjam.. все студией собирать буду..

Автор: Tonal 18.4.2008, 10:15

У меня сейчас в батничке (boost_mingw.cmd) такая строчка:

bjam --v2 gcc release debug threading=multi,single link=static,shared stage --with-%1

Используется так:
boost_mingw.cmd serialization

Собирает дебаг/релиз/статик/динамик/многопоточку/однопоточку.
Ложит всё в %BOOST_ROOT%\stage\lib

Автор: LuckLess 18.4.2008, 14:51

Tonal
+1. эта строчка сработала)).
вопрос - что означает --with-%1 ..?

Автор: Andrew Selivanov 19.4.2008, 13:56

Цитата(LuckLess @ 18.4.2008, 15:51) *
Tonal
+1. эта строчка сработала)).
вопрос - что означает --with-%1 ..?


Странно, что не сработала строчка sBUILD :)
%1 - это имя первого параметра, переданного батнику, т.е. для строчки test.bat PARAM1 PARAM2 PARAM3
%1 = PARAM1, %2 = PARAM2, %3 = PARAM3

А про параметры ты можешь все посмотреть в файле Jamfile.v2, что в корне буста:
# Other Options:
<... skipped нещщщадно ...>
#   --with-<library>        Build and install the specified <library>
#                           If this option is used, only libraries
#                           specified using this option will be built.
#
#   --without-<library>     Do not build, stage, or install the specified
#                           <library>. By default, all libraries are built.

Автор: schubbe 21.4.2008, 17:29

Пиши так:
bjam.exe link=static --v2 --toolset=msvc
префикс lib указывает на статическую сборку

Автор: Andrew Selivanov 24.4.2008, 14:10

Недавно вот еще опробовал вариант (для 1.35!):
bjam --build-type=complete --toolset=gcc stage (это мой mingw)

Правда этот вариант может не прокатить, если установлена версия ICU, собранная другим компилятором или другой версией компилятора, может несобраться Boost.Regex. Если ICU не установлена, проблем не должно быть :)

Автор: Red Devil 6.6.2008, 23:15

Цитата
Other Options:
--build-type=<type> Build the specified pre-defined set of variations
of the libraries. Note, that which variants get
built depends on what each library supports.
minimal (default) - Builds the single
"release" version of the libraries. This
release corresponds to specifying:
"release <threading>multi <link>shared
<runtime-link>shared" as the Boost.Build
variant to build.
complete - Attempts to build all possible
variations.


Опция complete и ждем. Никаких других опций указывать не нужно, соберутся все библиотеки и однотредную, и мультитредные и статические и динамические.
Останется их только подключить. Проверено на MSVS 2005.

Автор: mozgofil 23.4.2009, 21:48

А что вы здесь собираете собираете (какой пакет, в каком виде, под какую ось)?

Автор: Litkevich Yuriy 23.4.2009, 22:58

Цитата(mozgofil @ 24.4.2009, 1:48) *
А что вы здесь собираете собираете (какой пакет, в каком виде, под какую ось)?
уже скоро год как ничего несобирают
Цитата
Сообщение отредактировал Red Devil - 7.6.2008, 3:16

Автор: AD 28.7.2009, 11:49

Прошу ткнуть на файл/файлы документации, где рассказано про сборку буста и подключение его к проекту? Заранее спасибо!

Автор: Andrew Selivanov 28.7.2009, 13:25

Цитата(AD @ 28.7.2009, 12:49) *
Прошу ткнуть на файл/файлы документации, где рассказано про сборку буста и подключение его к проекту? Заранее спасибо!

Вот например: http://www.boost.org/doc/libs/1_39_0/more/getting_started/index.html там внизу справа для Windows или *Nix.
CygMing можно считать *Nix :)

Автор: AD 28.7.2009, 13:38

Цитата(Andrew Selivanov @ 28.7.2009, 14:25) *
Вот например: http://www.boost.org/doc/libs/1_39_0/more/getting_started/index.html там внизу справа для Windows или *Nix.
CygMing можно считать *Nix :)
Спасибо.
Cygwin, наверное! :) Ну это я знаю, что Cygwin - эмуляция ОС. :)

Автор: Влад 28.7.2009, 15:27

Там все bjam'ом делается. Почитай доку, там доходчиво все описано. Единственная неприятность - время.... пока bjam отработает, можешь сходить пообедать :)

Автор: Andrew Selivanov 28.7.2009, 16:46

Цитата(AD @ 28.7.2009, 14:38) *
Цитата(Andrew Selivanov @ 28.7.2009, 14:25) *
Вот например: http://www.boost.org/doc/libs/1_39_0/more/getting_started/index.html там внизу справа для Windows или *Nix.
CygMing можно считать *Nix :)
Спасибо.
Cygwin, наверное! :) Ну это я знаю, что Cygwin - эмуляция ОС. :)

CygMing - это Cygwin и Mingw - чтобы два раза не писать. Лень матушка :) Не моё изобретение, подсмотрено где то на забугре...

Автор: Iron Bug 29.7.2009, 15:01

Прорвавшись через горы работы, я вот добралась до обновления буста до 1.39.0. Думала по-быстренькому качнуть да собрать, но какая-то засада со сборкой вышла...

Собираю такой строкой (в общем, ничего особенного, 38-й так же собирался, всё без проблем):

bjam -j2 -sHAVE_ICU=1 --without-python --build-dir="D:\Temp\BoostBuild" --toolset=msvc-8.0 --build-type=complete --address-model=32 stage


Все ICU-шные макросы и пути указаны и т.п.

Проблема в build-type=complete (хочу собрать все варианты).

Однако при этом bjam выдаёт ошибку:

error: link=shared together with runtime-link=static is not allowed
error: such property combination is either impossible
error: or too dangerious to be of any use


Времени особо ковыряться нет, найти ничего полезного на этот счёт в сети с ходу не удалось. Может, кто-то уже напарывался на такую "фичу"?

Автор: Litkevich Yuriy 29.7.2009, 15:09

Цитата
link=shared together with runtime-link=static
ну если это вообще осуществимо, может стоит найти это сообщение в коде и посмотреть нет ли там какого-нибудь макроса поблизости, который разрешает подобную сборку.


П.С. С бустом не знаком :)

Автор: Iron Bug 30.7.2009, 7:53

если бы там было всё так просто... там капец сколько ссылок по разным файлам туда-сюда и с ходу понять что ему не нравится, не удалось.
я перерыла рассылки буста, там эта проблема всплывала.
проблема в ICU. я без неё не могу работать, мне нужен юникод...
снижение требований (сборка только статической линковки) с такой строкой:

bjam --toolset=msvc-8.0 --builddir="D:\Temp\BoostBuild" address-model=32 link=static runtime-link=static threading=multi stage debug release --with-regex -sHAVE_ICU=1

не помогла: лезет та же ошибка, хотя нигде явно нет упоминания shared.
на shared-link мне не хочется переходить по ряду причин.


заявила багу разработчикам буста. буду ждать обновлений.

Автор: Andrew Selivanov 30.7.2009, 11:03

Цитата(Iron Bug @ 30.7.2009, 8:53) *
если бы там было всё так просто... там капец сколько ссылок по разным файлам туда-сюда и с ходу понять что ему не нравится, не удалось.
я перерыла рассылки буста, там эта проблема всплывала.
проблема в ICU. я без неё не могу работать, мне нужен юникод...
снижение требований (сборка только статической линковки) с такой строкой:
bjam --toolset=msvc-8.0 --builddir="D:\Temp\BoostBuild" address-model=32 link=static runtime-link=static threading=multi stage debug release --with-regex -sHAVE_ICU=1

не помогла: лезет та же ошибка, хотя нигде явно нет упоминания shared.
на shared-link мне не хочется переходить по ряду причин.


заявила багу разработчикам буста. буду ждать обновлений.


bjam --toolset=msvc-8.0 --builddir="D:\Temp\BoostBuild" address-model=32 link=static threading=multi stage debug release --with-regex -sHAVE_ICU=1

Цитата
C:\boost\boost_1_39_0>bjam --toolset=msvc-8.0 --builddir="D:\Temp\BoostBuild" address-model=32 link=static threading=multi stage debug release --with-regex -sHAVE_ICU=1
Note: Building Boost.Regex with Unicode/ICU support enabled
Using ICU in
...patience...
...found 540 targets...
...updating 8 targets...
compile-c-c++ bin.v2\libs\regex\build\msvc-8.0\debug\address-model-32\link-static\threading-multi\icu.obj
icu.cpp
.\boost/regex/icu.hpp(22) : fatal error C1083: Cannot open include file: 'unicode/utypes.h': No such file or directory
...не суть важно...


PS: Очевидный баг с runtime-link

Автор: AD 4.8.2009, 9:26

Цитата(Tonal @ 18.4.2008, 11:15) *
У меня сейчас в батничке (boost_mingw.cmd) такая строчка:
bjam --v2 gcc release debug threading=multi,single link=static,shared stage --with-%1

А для студии в этой строке надо заменить только gcc на msvc?

Автор: Iron Bug 4.8.2009, 11:07

Цитата(Andrew Selivanov @ 30.7.2009, 14:03) *
PS: Очевидный баг с runtime-link

тут дело не в самой ICU. для сборки ICU нужны ещё некоторые переменные среды, я их просто не указала. у меня тут проблемы не возникает. но лезет то самое ограничение буста на совместную сборку static и shared, даже в том случае, если нет никакого явного указания на shared. это бага.

Цитата(AD @ 4.8.2009, 12:26) *
А для студии в этой строке надо заменить только gcc на msvc?

сейчас строка для bjam выглядит как указано у меня. видимо, это какой-то устаревший пост. для выбора компилятора устанавливается опция toolset

Автор: AD 4.8.2009, 11:10

Цитата(Iron Bug @ 4.8.2009, 12:07) *
сейчас строка для bjam выглядит как указано у меня. видимо, это какой-то устаревший пост. для выбора компилятора устанавливается опция toolset

А можно еще раз выложить корректную строку bjam для msvc? Заранее спасибо. Сборки - статическая, динамическая, релизная. Ну и дебаг-сборку для динамической сборки тоже можно, для проверки.

Автор: Iron Bug 5.8.2009, 12:24

ну, в самом простом случае примерно так:

bjam --toolset=msvc-8.0 --builddir="D:\Temp\BoostBuild" address-model=32 link=static runtime-link=static threading=multi stage debug release


перед сборкой нужно также запустить bootstrap - он создаст необходимую структуру для сборки.
собрать (исходники для сборки bjam поставляются с бустом и находятся в папке ./tools/jam) или скачать готовый bjam нужной версии.

соответственно, в строке для bjam надо указать необходимые опции линковки (static/shared), версии для debug или release (либо обе), рабочий каталог для сборки, нужную "потокобезопасность" (слово-то какое на русском языке! :) ) - то есть однопоточные/многопоточные версии библиотек, размерность шины (32-64 бита). 'stage' (значение по умолчанию) в данном случае указывает, что готовые библиотеки будут скопированы в локальную папку ./stage относительно корня исходников (можно указать, куда их складывать)
для скорости можно ещё добавить количество одновременно выполняемых задач (если машина многопроцессорная): -jN, где N- количество задач.

версия компилятора также указывается. для MSVC можно указать просто msvc либо msvc-X.0, если на машине установлено несколько компиляторов. для gcc указывается gcc, для остальных я так не помню, надо читать доки. это всё есть на сайте буста.

однако у буста есть много дополнительных библиотек, включающихся опционально (поддержка regex, mpi, некоторые графические библиотеки), а также есть возможность отключать некоторые модули (я, например, собираю буст без поддержки питона, т.к. я им не пользуюсь). но по деталям надо читать доки на сами библиотеки и либо собирать их отдельно, либо включать необходимые опции в общую строку сборки.

да, вроде бы для некоторых библиотек для MSVC там прилагаются готовые 'солюшены' (я не мастер русскоязычного программирования!) для сборки, но я их не пробовала применять, так что советовать не буду.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)