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

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

Форум на CrossPlatform.RU _ boost _ Сборка Boost с помощью MinGW32

Автор: Litkevich Yuriy 27.10.2010, 17:36

Как заставить сценарий собирать буст с конкретным компиллером. А то сценарий ошибку выдаёт всё время.
Я нашёл, что в потрахах bat-ника пути забиты отбалды (в стиле рядового быдлокоддера).

Попробовал свои пути записать, ну он и собрал под студию (которой у меня нет) :blink:

Скачал: boost_1_44_0

Автор: igor_bogomolov 27.10.2010, 19:54

Я boost вот по этой инструкции собирал (http://www.forum.crossplatform.ru/index.php?s=&showtopic=4093&view=findpost&p=30330)

Автор: Iron Bug 27.10.2010, 19:59

ну, конкретно насчёт mingv не уверена, но для icc я его собирала так:

./bootstrap.sh  --with-toolset=intel-linux

export CC=/opt/intel/Compiler/11.1/072/bin/ia32/icc
export CXX=/opt/intel/Compiler/11.1/072/bin/ia32/icpc

./bjam -j2 --layout=versioned --build-type=complete install


тебе тут надо будет поменять CC и CXX, и ещё найти, как указать в параметре --with-toolset твой mingv (это на сайте буста поройся). ну и прочие там параметры у bootstrap можно указать, смотря что конкретно хочешь собрать.

Автор: Litkevich Yuriy 27.10.2010, 20:21

я делал так:

bootstrap.bat mingw

сначала печаталась ошибка (в лог-файл), я потом в сам батник bjam'а залез и исправил путь, он был жёстко забит:
C:\MinGW\bin\gcc.exe

Автор: kilkinenator 27.12.2010, 14:31

я, наверное, немного невовремя)
в документации буста (раздел getting started) написано что boost jam собирается так:

Цитата
build [toolset]

также написано что он очень умен и "наибольший шанс на успех" можно достичь не указывая тулсет
Цитата
Running the scripts without arguments will give you the best chance of success

ниже написано как он будет определять тулсет, в частности он решит что нужно компилить под студию если:
Цитата
VCVARSALL.BAT already configured
%VS90COMNTOOLS% is present in environment
Common install location: "%ProgramFiles%\Microsoft Visual Studio 9"
%VS80COMNTOOLS% is present in environment
Common install location: "%ProgramFiles%\Microsoft Visual Studio 8"
CL.EXE in PATH

теперь смотрим что написано в bootstrap.bat
Цитата
call .\build.bat > ..\..\..\bjam.log

тоесть там не указан тулсет, и все будет собрано так как он решит. вероятно, если вы это читаете, вы не достигли обещанного успеха.

таблица тулсетов сдесь: http://www.boost.org/doc/tools/jam/jam/building.html

Автор: Iron Bug 10.2.2011, 15:27

Да, кстати, сегодня я вполне успешно собрала буст под MinGW(это под вендой). никаких проблем:

set PATH="c:\MinGW\bin";%PATH%

bjam -j2 --toolset=gcc --build-dir="D:\Temp\BoostBuild" --build-type=complete stage --layout=tagged

обрати внимание, что для венды MinGW - это gcc(см. тулсет MinGW). ну, а остальное - дело вкуса, так сказать (-j2 - количество параллельных процессов (у меня два ядра) - чтобы ускорить процесс сборки).

bjam собирается через booststrap (тупо запуском батника). тут неважно, каким компилятором он сам соберётся.

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

и есть ещё проблема с именами выходных статических библиотек - как-то он криво обзывает статические мультитредовые библиотеки. например, есть библиотека libboost_XXX-mt-sd.a, а libboost_XXX-mt-s.a - нет. тут система именования хитрая, либо банально где-то опечатка в сборочных скриптах. это надо ещё смотреть. но, в общем, я собрала с этим якобы дебажным по названию файлом статику - всё работает.

а дома вчера до кучи собрала буст под линь. и ещё - кросскомпилерный MinGW из-под линя в любую платформу и уже под ним - буст. в общем, всё дико совместимо и вполне работоспособно.

Автор: panter_dsd 12.7.2011, 11:48

Пытаюсь собрать 1.47.0 и не получается.

c:\panter\boost\boost_1_47_0>bjam --build-dir=build toolset=gcc --build-type=com
plete stage
mingw.jam: No such file or directory
c:/panter/boost/boost_1_47_0/tools/build/v2/build\toolset.jam:38: in toolset.usi
ng
rule mingw.init unknown in module toolset.
c:/panter/boost/boost_1_47_0/tools/build/v2/build\project.jam:888: in using
c:\panter\boost\boost_1_47_0\tools/build/v2\user-config.jam:43: in modules.load
c:/panter/boost/boost_1_47_0/tools/build/v2\build-system.jam:257: in load-config

c:/panter/boost/boost_1_47_0/tools/build/v2\build-system.jam:399: in load-config
uration-files
c:/panter/boost/boost_1_47_0/tools/build/v2\build-system.jam:555: in load
c:\panter\boost\boost_1_47_0\tools\build\v2/kernel\modules.jam:283: in import
c:\panter\boost\boost_1_47_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-b
uild
c:\panter\boost\boost_1_47_0\boost-build.jam:17: in module scope

Гуглится много чего, но ответов нет. У кого получилось?

Автор: Iron Bug 12.7.2011, 14:05

попробуй установить путь до мингва, как-нибудь так:
set PATH="c:\MinGW\bin";%PATH%

у меня ещё msys и утильки для него установлены.

P.S. или у тебя конкретно 47-й не собирается? ща себе качну и попробую собрать.

Автор: panter_dsd 12.7.2011, 14:13

Конкретно 47. mingw в PATH присутствует.

Автор: Iron Bug 12.7.2011, 14:22

у меня он собирается. в процессе...
пока всё пучком.
собралось.

P.S. у тебя в командной строке опечатка: не toolset=..., а --toolset=...

Автор: panter_dsd 12.7.2011, 15:19

Я и так и так пробовал. Можешь, пожалуйста, по шагам свои действия расписать?

Автор: Iron Bug 12.7.2011, 17:40

да никаких особых тайных действий... как я выше писала, всё так же, только тулсет стандартный:

bootstrap.bat
bjam -j2 --toolset=gcc --build-type=complete


(--j2 - для двухпроцовой машины, чтобы собиралось быстрее).
всё. наверное, можно сделать и так:
http://www.forum.crossplatform.ru/index.php?showtopic=5847&view=findpost&p=41914

я сейчас дома, тут венды нет, чтобы проверить. но у меня всё совершенно стандартно собралось, как и любой другой предыдущий буст, без проблем.

Автор: panter_dsd 12.7.2011, 19:36

Хм. Очень странно. Дома собирается. Завтра на работе еще раз все перепроверю.

Автор: panter_dsd 13.7.2011, 10:05

Разобрался. Все дело было в переменной окружения BOOSTDIR, нужно было BOOST_ROOT. Iron Bug, большое спасибо.

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