LINUX.ORG.RU

boost::build


0

0

Кто с этим делом сталкивался? насколько удобно? Чем лучше/хуже других систем сборки?

★★★★★

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

ott ★★★★★
()

очень логичная и высокоуровневая штука, намного круче cmake и других
но если правила сложнее чем cpp -> exe, то уже нужно очень хорошо знать кучу тонкостей мега-кривого bjam-а, на котором оно почему-то написано (правда, сейчас дописывают порт на питон), перелопатить кучу сорцев итд. зато если в проекте действительно сложные взаимопревращения целей, то потом будет можно легко и _очень масштабируемо все написать

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

пример: хрен вы на cmake так же логично опишите, скажем, такой случай: http://omploader.org/vMmt5aw
где, например, то что генерится из одного файла xpod, потом вместе собирается в одну цель

а если сборка проекта более-менее обычна, то cmake и учить легче, чем boost.build, и возможностей его хватит, и использовать будет по-удобней

gavv
()
Ответ на: комментарий от gavv

Рекомендую SCons. Там изначально все на Питоне. Я юзал его, когда с использованием различных *make не удавалось лаконично описать правила сборки в большом проекте.

Kpoxman ★★
()
Ответ на: комментарий от gavv

пример: хрен вы на cmake так же логично опишите, скажем, такой случай: http://omploader.org/vMmt5aw
где, например, то что генерится из одного файла xpod, потом вместе собирается в одну цель

А это сложный случай? ИМХО с этим справится и обычный make.

Makefile:

html: png pod
	touch html
gv:
	touch gv	
xpod:
	touch xpod
dot: gv xpod
	touch dot
dia:
	touch dia
png:  dot dia
	touch png
pod: xpod
	touch pod
clean:
	rm -f gv xpod dot dia png pod html

$ make

touch gv	
touch xpod
touch dot
touch dia
touch png
touch pod
touch html
Где-то так, конкретные команды генерации разписывать нет смысла. По идее, CMake тоже должен уметь, если он может генерировать Makefile.

ipc
()

autotools распространённее. Для мегабольших проектов, возможно, что-то другое лучше, но для обычных - за глаза хватает.

mv ★★★★★
()
Ответ на: комментарий от ipc

>с этим справится и обычный make
тут у вас недописано кое-что. html, png, pod - это что? это файлы. а нужно описать преобразования типов, чтобы из всех xpod генерились png и pod, а потом именно из этих конкретных сгенеренных файлов вместе собирался html. а если вы в make напишете образцы, то получится, что из любых png + pod генерится html, что тоже не то. так что make придется генерить - для каждой цепочки целей по такому куску, как вы написали.

gavv
()
Ответ на: комментарий от mv

>autotools
по-моему самое вменяемое, что вообще есть ;)

gavv
()
Ответ на: комментарий от mv

Для обычных overhead слишком большой. Все эти configure/makefile.am.... в сумме весят больше чем исходники.

Reset ★★★★★
()
Ответ на: комментарий от gavv

> хорошая вещь, но (с буст билдного листа) "doesn't provide such high level features"

По-хорошему, после этого должен идти список не предоставленных высокоуровневых фич, которые предоставляет boost::build

kemm
()

спасибо.. примерно ясно.

На оф.сайте в описании слово "easy". Я так понимаю *здят?

mono ★★★★★
() автор топика
Ответ на: комментарий от kemm

>список не предоставленных высокоуровневых фич
о да. абстракции. логические свойства целей (http://www.boost.org/doc/tools/build/doc/html/bbv2/overview/builtins/features...) - абстрактных объектов, которые объявляются правилами (http://www.boost.org/doc/tools/build/doc/html/bbv2/reference/rules.html), предоставляемыми tool-ами (http://www.boost.org/doc/tools/build/doc/html/bbv2/reference/tools.html), опять же настраиваемыми, или генераторами, которые тоже регистрируют tool-ы. все это классы, наследование там, итд.

то есть абстрагируемся от: файлов (цель более общее понятие), опций компиляторов/программ, проектов, итд. в scons цели - файлы, тулы - набор переменных, опции - строки. он проще.

поправьте, если не так - scons знаю не слишком хорошо, только читал доки, да попробовал пару примеров. интересно послушать, у меня курсовая на эту тему ;)

gavv
()
Ответ на: комментарий от mono

>слово "easy"
по мне так, не сложно. но обычно люди так не думают, чаще из-за синтаксиса. но в простых случаях - 100%, согласитесь - это http://www.boost.org/doc/tools/build/doc/html/bbv2/tutorial.html#bbv2.tutoria... не сложно, да и, на самом деле, это тоже: http://www.boost.org/doc/tools/build/doc/html/bbv2/extender/example.html, http://www.boost.org/doc/tools/build/doc/html/bbv2/extending/targets.html

такое, наверное, кажется хуже: http://www.boost.org/doc/tools/build/doc/html/bbv2/extending/tools.html, но на самом деле мм, скажем, "фрэймворк" очень мощный

gavv
()

Просто забудь про все, кроме CMake.

anonymous
()
Ответ на: комментарий от mono

Есть хорошая сравнительная статья http://gamesfromwithin.com/the-quest-for-the-perfect-build-system http://gamesfromwithin.com/the-quest-for-the-perfect-build-system-part-2

Сравниваются make, ant, scons, jam, boost::jam и т.п.

В целом выводы, вкратце: Jam и Boost::build очень быстрые, но "рецепты" писать трудновато, как только начинаются расширения , навороты, и т.п. Scons/Waf неплохой, но довольно медленный. Make файлы быстры, но нужно не забывать про "recursive makefiles considered harmful", b генерировать их каким-то bakefiles.

CMAKE в сочетании с Lua/CMakeScripts неплох.

anonymous
()
Ответ на: комментарий от gavv

> в scons цели - файлы, тулы - набор переменных, опции - строки. он проще.

это не совсем так: там есть abstract builder, который пишется на том же питоне -- строится DAG, вычисляются сигнатуры, гарантируется корректность/"воспроизводимость" билдов. В Waf примерно тоже самое, только Waf быстрее и компактнее Scons.

anonymous
()
Ответ на: комментарий от anonymous

и можно объявить цель, не привязанную к файлу ?

gavv
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.