[РЕШЕНО] Настройка site-config.jam для Boost
Вопрос такой: что прописать в /etc/site-config.jam, чтобы можно было собирать boost-озависмые проекты в Gentoo?
Вот у меня есть проект на Boost, который использует для сборки Boost.Build.
Вот фрагмент файла сборки Jamroot:
import boost ; boost.use_project ; project mas : requirements <library>/boost//thread <library>/boost//filesystem <library>/boost//system <library>/boost//serialization ; lib mas : [glob *.cpp ] ;
И соответствующий файл site-config.jam (под Windows):
using gcc ; import boost ; using boost : 1.44 : <root>/C:/Boost ;
(да, я собираю библиотеку с помощью mingw, но это не важно)
Когда я выполняю bjam в Windows, проект (dll-ка libmas.dll) отлично собирается. Но для этого нужно иметь полный вариант Boost'а, его исходники. Просто папки с заголовками и lib-ами (которые получаются сборкой bjam install для boost'а) недостаточно. Оно и понятно, директива using boost ориентируется именно на исходники Boost'а, которые располагаются по заданному пути.
Так вот вопрос, как правильно в Gentoo настроить site-config.jam , если я ставлю boost командой emerge boost ?
Понятное дело, я могу скачать исходники Boost'а и указать using boost : 1.44 :
Подскажите, пожалуйста, как это сделать?
- Для комментирования войдите или зарегистрируйтесь
Я думаю, что раз тебе нужны
Я думаю, что раз тебе нужны исходники, позаботься, что бы они поставились - переделай текущий ebuild или создай свой который будет только ставить исходники в систему.
ps я думаю проще будет держать свою версию boost, да и исчезнет вероятность, что твоя прога неожиданно перестанет работать/компилиться из-за того, что в новой версии boost, что-то изменилось.
Нет, исходники boost'а мне не
Нет, исходники boost'а мне не нужны. Мне нужна кроссплатформенная сборка, чтобы я, пользуясь одним и тем же Jamroot (или Jamfile) мог получить библиотеку как в Windows, так и в Linux.
Как это сделать?
Свой ebuild мне тоже не подходит, т.к. мне самому придется его обновлять, а мне этого не хочется делать.
Ничего не понял, почему
Ничего не понял, почему системные заголовки и библиотеки не подходят? Чем другие пакеты отличаются от твоего, если твой не может подхватывают системные?
Не грусти, товарищ! Всё хорошо, beautiful good!
Системные заголовки и
Системные заголовки и библиотеки подходят, но как написать site-config.jam, чтобы bjam их подхватывал??
Вот в этом вопрос. Тот site-config.jam, что я привел в начале топика, подходит в Windows, но в Gentoo не работает.
Т.е. мне нужен:
1) Кроссплатформенный Jamroot проекта,
2) Удобная установка boost, не требующий отдельной установки и настройки, хотя бы в Gentoo.
https://svn.boost.org/trac/bo
https://svn.boost.org/trac/boost/browser/trunk/tools/build/v2/contrib/boost.jam
В Gentoo ставится просто - emerge -av boost:1.41
Не грусти, товарищ! Всё хорошо, beautiful good!
Ответ не верный. Удается
Ответ не верный.
Удается собрать после следующих манипуляций:/usr/include/boost-1_41
/usr/lib/boost-1_41"
* Записать в site-config.jam строчку "using boost : 1.41 :
* Скачать boost.7z, распаковать его,
* экспортировать переменную BOOST_BUILD_PATH=/путь/к/распакованному/бусту/tools/build/v2
* и выполнить bjam
Тогда всё собирается.
Однако, повторяю третий раз (!), мне хотелось бы, чтобы это осуществлялось автоматически, чтобы достаточно было сделать emerge boost, emerge <что-то там ещё> и не нужно было устанавливать переменные окружения и т.п., а потом заморачиваться на тему обновления пакетов. В конце концов, систему я обновляю командой emerge -uDN world, и хочу, чтобы так же обновился и boost, и всё, что с ним связано.
Это возможно? Или всё-таки придется самостоятельно выковыривать /tools/build/v2 ?
пробовали?
http://stackoverflow.com/questions/1001957/boost-build-site-config-jam-on-gentoo
а эта строка - это просто подпись
РЕШЕНО
После вдумчивого чтения contrib/boost.jam и такой-то матери проблему удалось решить.
Вот что нужно сделать:
После этого можно собирать проект вызовом bjam.
Ну и после обновления системы нужно снова закинуть файлик contrib/boost.jam в /usr/share/boost-build. К сожалению, так и не разобрался, как забороть вот этот последний пункт.