Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сборка буста...
Форум на CrossPlatform.RU > Библиотеки > boost
LuckLess
захожу я в каталог 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
Command line для линковки в студию! :)
(Его можно посмотреть где то в свойствах проекта в разделе линковки)
LuckLess
Цитата(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
Для VC в Boost-е работает автолинковка через #pragma comment
Судя по всему, несовместимые опции сборки. Например, ты собираешь проект в статике, а bjam по умолчанию генерит библиотеки для динамики...
LuckLess
Tonal
похоже на то.. да.. как bjam - у скачать что я хочу в статике собраться..?
LuckLess
в общем нашел я в комплекте sln для студии 7-1.. открыл.. переименовал названия с 7-1 на 80.. собал.. и вроде работает.. :p
Andrew Selivanov
Цитата(LuckLess @ 17.4.2008, 15:39) *
в общем нашел я в комплекте sln для студии 7-1.. открыл.. переименовал названия с 7-1 на 80.. собал.. и вроде работает.. :p

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

bjam.exe --v2 --toolset=msvc --link=static
так?)) чтото не помогло..
Andrew Selivanov
Цитата(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
Цитата
-sBUILD="release debug <threading>multi/single <runtime-link>static/dynamic"

не помогло. собирает тоже самое. все, кстати в папке debug.. блин.. нафиг этот bjam.. все студией собирать буду..
Tonal
У меня сейчас в батничке (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
Tonal
+1. эта строчка сработала)).
вопрос - что означает --with-%1 ..?
Andrew Selivanov
Цитата(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
Пиши так:
bjam.exe link=static --v2 --toolset=msvc
префикс lib указывает на статическую сборку
Andrew Selivanov
Недавно вот еще опробовал вариант (для 1.35!):
bjam --build-type=complete --toolset=gcc stage (это мой mingw)

Правда этот вариант может не прокатить, если установлена версия ICU, собранная другим компилятором или другой версией компилятора, может несобраться Boost.Regex. Если ICU не установлена, проблем не должно быть :)
Red Devil
Цитата
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
А что вы здесь собираете собираете (какой пакет, в каком виде, под какую ось)?
Litkevich Yuriy
Цитата(mozgofil @ 24.4.2009, 1:48) *
А что вы здесь собираете собираете (какой пакет, в каком виде, под какую ось)?
уже скоро год как ничего несобирают
Цитата
Сообщение отредактировал Red Devil - 7.6.2008, 3:16
AD
Прошу ткнуть на файл/файлы документации, где рассказано про сборку буста и подключение его к проекту? Заранее спасибо!
Andrew Selivanov
Цитата(AD @ 28.7.2009, 12:49) *
Прошу ткнуть на файл/файлы документации, где рассказано про сборку буста и подключение его к проекту? Заранее спасибо!

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

CygMing - это Cygwin и Mingw - чтобы два раза не писать. Лень матушка :) Не моё изобретение, подсмотрено где то на забугре...
Iron Bug
Прорвавшись через горы работы, я вот добралась до обновления буста до 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
Цитата
link=shared together with runtime-link=static
ну если это вообще осуществимо, может стоит найти это сообщение в коде и посмотреть нет ли там какого-нибудь макроса поблизости, который разрешает подобную сборку.


П.С. С бустом не знаком :)
Iron Bug
если бы там было всё так просто... там капец сколько ссылок по разным файлам туда-сюда и с ходу понять что ему не нравится, не удалось.
я перерыла рассылки буста, там эта проблема всплывала.
проблема в 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
Цитата(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
Цитата(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
Цитата(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
Цитата(Iron Bug @ 4.8.2009, 12:07) *
сейчас строка для bjam выглядит как указано у меня. видимо, это какой-то устаревший пост. для выбора компилятора устанавливается опция toolset

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

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 там прилагаются готовые 'солюшены' (я не мастер русскоязычного программирования!) для сборки, но я их не пробовала применять, так что советовать не буду.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.