Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Компиляция boost под Windows


Автор: EvilsInterrupt 9.4.2012, 21:35
Компилирую этот Boost впервые и поэтому зарылся в документацию так, что аж не видно меня.
Решил упростить жизнь на будущее и написал батник. Вот его содержимое:

Код

@rem Win32
.\b2.exe --without-wave --without-python --without-graph_parallel --without-graph stage --stagedir=stage32 toolset=msvc variant=debug link=static threading=multi runtime-link=static
.\b2.exe --without-wave --without-python --without-graph_parallel --without-graph stage --stagedir=stage32 toolset=msvc variant=release link=static threading=multi runtime-link=static

@rem x64
.\b2.exe --without-wave --without-python --without-graph_parallel --without-graph stage --stagedir=stage64 toolset=msvc variant=debug link=static threading=multi runtime-link=static address-model=64
.\b2.exe --without-wave --without-python --without-graph_parallel --without-graph stage --stagedir=stage64 toolset=msvc variant=release link=static threading=multi runtime-link=static address-model=64


можно ли его как-нить упростить?

Автор: boostcoder 9.4.2012, 22:15
уже раз 20 обсуждалось. половину из них, я давал эту ссылку: http://forum.try-catch.ru/index.php?topic=286.0

модераторы, может закрепить инструкцию по сборке уже хоть раз? smile 

Автор: EvilsInterrupt 20.4.2012, 15:16
Цитата(boostcoder @  9.4.2012,  23:15 Найти цитируемый пост)
уже раз 20 обсуждалось. половину из них, я давал эту ссылку: http://forum.try-catch.ru/index.php?topic=286.0


В статье по этой ссылке не освящены вопросы:
1) Что если мне не нужна какая-либо библиотека? (опция --without)
2) Нет упоминания про 64-бита. Т.е. это аналогично 32-битному или что-то еще нужно?

Автор: boostcoder 20.4.2012, 16:25
Цитата(EvilsInterrupt @  20.4.2012,  15:16 Найти цитируемый пост)
В статье по этой ссылке не освящены вопросы

в той статье, есть волшебная ссылка на доку по boost.build:
Цитата

Описание ключей для bjam Вы можете найти тут.

Исправлю.

Автор: EvilsInterrupt 21.4.2012, 21:55
Цитата(boostcoder @  20.4.2012,  17:25 Найти цитируемый пост)
в той статье, есть волшебная ссылка на доку по boost.build:

Основная цель того что Вы написали статью про boost?
На мой взгляд Вы стремились облегчить порог вхождения в использование boost разве не так? Думаю, что да. Как вывод так и следует продолжать. Если что-то кому-то непонятно, то имеет смысл подумать "может действительно это раскрыть. Потому что существует вероятность что еще кому-то не понятно и это следует раскрыть!

ИМХО

У меня возникло достаточно много вопросов из-за которых провел больше дня в документации, потому что у меня с буржуйским на Вы, я конечно над исправлением работаю, но решать задачи надо не  потом, когда изучу, а сейчас!

Вот некоторый список:

1) Как скомпилировать под 64-бита?
2) Достаточно ли для того чтобы ответить на п.1. применить "address-model=64"?
3) Может еще надо архитектуру x86 указывать или она по умолчанию?
4) Обязательно ли указывать "toolset=msvc" может он по дефолту?

Еще:
Попутно пришлось загуглить как в MSVC 2010 студии прописывать буст в глобальные инклуды и либы, ведь это теперь отличается от того что было в 2008. Этот нюанс тоже можно отметить хотя бы ссылкой "Для 2010 решение искать тут".

Если чтото писать не хочется, то нужно ввести ограничения статьи словами "Вам нужно уметь..."


Автор: boostcoder 22.4.2012, 17:00
Цитата(EvilsInterrupt @  21.4.2012,  21:55 Найти цитируемый пост)
1) Как скомпилировать под 64-бита?
2) Достаточно ли для того чтобы ответить на п.1. применить "address-model=64"?

Цитата

address-model=64

если в системе только 64битный компилятор - по умолчанию соберется 64ех битная версия.

Цитата(EvilsInterrupt @  21.4.2012,  21:55 Найти цитируемый пост)
3) Может еще надо архитектуру x86 указывать или она по умолчанию?

указывать не нужно. она по умолчанию.

Цитата(EvilsInterrupt @  21.4.2012,  21:55 Найти цитируемый пост)
4) Обязательно ли указывать "toolset=msvc" может он по дефолту?

он по дефолту.
если используете другой компилятор - нужно указывать.

Цитата(EvilsInterrupt @  21.4.2012,  21:55 Найти цитируемый пост)
Попутно пришлось загуглить как в MSVC 2010 студии прописывать буст в глобальные инклуды и либы, ведь это теперь отличается от того что было в 2008.

я в той статье описал установку boost в каталоги MSVC. так что ничего прописывать/указывать не нужно.

Автор: Randajad 22.4.2012, 19:18
Как сложно. У меня такой батник:

cd /D c:\boost
bootstrap
bjam toolset=msvc variant=release link=static runtime-link=static optimization=speed inlining=full cxxflags="/GL" linkflags="/LTCG" filesystem system program_options signals date_time

Собирает только необходимые либы + LTCG.

Автор: EvilsInterrupt 22.4.2012, 21:46
Randajad
С вашими опциями можно как Release так и Debug версии?

Автор: Randajad 23.4.2012, 08:51
Ага, variant=debug указать.

Автор: boostcoder 27.7.2012, 20:54
еще один важный момент, который я уже наверное в 30ый раз объясняю: не все из подбиблиотек boost собираются в динамические/статические библиотеки.
дело в том, что большая часть этих подбиблиотек - http://en.wikipedia.org/wiki/Header-only библиотеки.
не пытайтесь собрать их как динамические/статические библиотеки! не пытайтесь заставить bjam сделать это!
понять, какие библиотеки являются http://en.wikipedia.org/wiki/Header-only, вы можете перейдя по ссылке документации конкретной версии(к примеру: http://www.boost.org/doc/libs/1_50_0/), и кликнув по табличке в самом начале страницы по категории http://www.boost.org/doc/libs/1_50_0/?view=filtered_header-only.

спасибо за внимание.

Автор: EvilsInterrupt 24.1.2013, 11:23
К сожалению, Google Chrome не может найти страницу forum.try-catch.ru.

Автор: boostcoder 24.1.2013, 12:07
вечером выложу батник сюда.

Автор: boostcoder 25.1.2013, 21:44
x32:
Цитата

@echo off

set MINGWDIR=d:/mingw32

rem check if mingw path correct
if not exist %MINGWDIR%/bin/mingw32-make.exe (
   echo bad mingw directory!
   exit /b 1
) else (
   echo mingw directory ok.
)

bjam ^
    -j4 ^
    toolset=gcc ^
    variant=release ^
    threading=multi ^
    link=static ^
    runtime-link=static ^
    --without-mpi ^
    --without-math ^
    --without-random ^
    --without-graph ^
    --without-graph_parallel ^
    --without-python ^
    --without-wave ^
    --layout=system ^
    --libdir=%MINGWDIR%/i686-w64-mingw32/lib ^
    --includedir=%MINGWDIR%/i686-w64-mingw32/include ^
    install

pause

x64:
Цитата

@echo off

set MINGWDIR=d:/mingw64

rem check if mingw path correct
if not exist %MINGWDIR%/bin/mingw32-make.exe (
   echo bad mingw directory!
   exit /b 1
) else (
   echo mingw directory ok.
)

bjam ^
   -j4 ^
    toolset=gcc ^
    variant=release ^
    threading=multi ^
    link=static ^
    runtime-link=static ^
    --without-mpi ^
    --without-math ^
    --without-random ^
    --without-graph ^
    --without-graph_parallel ^
    --without-python ^
    --without-wave ^
    --layout=system ^
   --libdir=%MINGWDIR%/x86_64-w64-mingw32/lib ^
   --includedir=%MINGWDIR%/x86_64-w64-mingw32/include ^
   install

pause


Автор: NEVOLSHEBNIK 25.2.2013, 11:09
Скачал с оф. сайта boost_1_53_0.tar.bz2. При сборке  bjam вылезает ошибка
***** ПРЕВЫШЕНИЕ РАЗМЕРОВ СТЕКА *****
***** ПРИ ВЫПОЛНЕНИИ РЕКУРСИИ В ПАКЕТНОМ РЕЖИМЕ *****
Глубина рекурсии=1240, Использование стека 90проц.
***** ПАКЕТНАЯ ОБРАБОТКА ПРЕРВАНА *****

Оказалось, что концы строк build.bat  в юниксовом формате(lf), котоый мой xp не понимает. smile 
Так что если качать, то лучше 7z архив, или придется изменять в файле build.bat формат конца строк. 

Автор: VSB 4.3.2013, 00:05
boostcoder, создавал отдельную тему, но никто не ответил.
Пишу в Visual Studio 2012, собираю обычно тулсетом v110, но иногда требуется v110_xp. Как скомпилировать boost под оба тулсета, и выбирать правильные либы при сменен тулсета?

Автор: Zonanor 4.1.2021, 01:10
Вы всё время интернет, или же собственно что там такового не простого то

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)