2009-02-04 3 views
17

Что такое Boost Jam и Jam стоит мигрировать?Что такое Boost Jam и Jam стоит мигрировать?

Я понимаю, что джем построен системой, созданной perforce, но я не уверен, как форсирование jam & обычное варенье отличается.

Я также надеюсь, что в сообществе SO может быть кто-то, кто работал с ним и может выделить некоторые различия и/или преимущества.

ответ

5

Для моих целей это просто то, что создает для вас библиотеку boost, я не знал, что вы можете сделать что-нибудь еще, поэтому я не понимаю, что вы могли бы сказать, перейдя на нее. И мне очень жаль, но я не знаю, что такое обычное варенье. Поскольку никто другой не дал ответа, я просто объясню это.

Boost - это набор классов и функций для C++, которые полезны для различных задач. Классы и функции boost группируются в библиотеки. Некоторые библиотеки имеют свой код в заголовочных файлах, которые можно использовать просто с помощью инструкции препроцессора #include, в то время как другие (например, файловая система или библиотека регулярных выражений) имеют часть своей реализации в файлах .cpp.

Компиляция этих .cpp-файлов может занять много времени (это похоже на 30 минут в зависимости от того, что вы компилируете), и это было бы настоящей болью, если бы потребовалось полчаса каждый раз, когда вы хотели перекомпилировать свою программу. Так что они сделали только для тех библиотек, которые частично хранятся в .cpp-файлах, вы можете предварительно их скопировать в файл .lib, и это является целью форматирования. Это означает, что вам нужно всего лишь потратить полчаса на сбор после, и с этого момента вам больше не придется ждать полчаса.

Однако, как вы можете себе представить, каждая библиотека ускорения состоит из множества файлов cpp и многих файлов заголовков, и есть много разных вариантов каждого (отладочные версии, версии выпуска, многопоточные и т. Д.), И поэтому это не простой процесс, чтобы просто скомпилировать библиотеку boost. Именно здесь приходит форвард. Вы даете ему команду для компиляции библиотек, а затем выдает все команды для вас в компилятор, и к концу этого времени вы будете иметь коллекцию предварительно скомпилированных файлов .lib, один для каждый различный вкус каждой библиотеки. Заголовочные файлы каким-то образом сообщают компоновщику, какие файлы lib включать, поэтому, если у вас есть правильная настройка путей, правильный вкус прекомпилированного .lib-файла будет автоматически связан с вашей программой, таким образом сохраняя 30-минутную компиляцию.

Вы можете увидеть, какие библиотеки нужно скомпилировать с помощью форматирования, а какие нет у библиотек, если посмотреть на эту страницу: http://www.boost.org/doc/libs/1_37_0 - если библиотеке не нужен файл lib (и, следовательно, вам не нужно возиться с boost jam first), он скажет: «Build & Link: Header only», тогда как если библиотека требует, чтобы вы предварительно скомпилировали файл lib, он скажет: «Build & Link: Automatic linking».

Кроме того, если вы находитесь в Windows, вы можете загрузить предварительно скомпилированные .lib-файлы, чтобы вам никогда не приходилось использовать форматирование. Для этого вам нужно перейти на страницу www.boost.org, перейдите в раздел «Начало работы» и следуйте за ним полностью, чтобы убедиться, что все правильно настроено. Одна из ссылок в версии Windows на этой странице сообщает вам, где найти прекомпилированные .lib-файлы.

+0

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

+3

Другие комментарии (возможно, добавленные позже) говорят, что Boost Jam - это система сборки; поэтому он выходит за рамки компиляции самих библиотек повышения. – Jaywalker

+0

Этот ответ просто бесполезен и дезинформирован. –

9

Как вы заявляете, Boost Jam - это система сборки и может использоваться независимо от любых других библиотек boost. Я ничего не знаю о Perforce Jam, но, на мой взгляд, Boost jam очень похож и в основном совместим.

Главное отличие заключается в том, что Boost Jam часто поставляется с Boost Build, набором правил джем, предназначенных для обычных задач, например.компиляция библиотек, запуск модульных тестов, создание документации для кислорода и т. д.

По сравнению с другими системами сборки Boost Jam/Boost Build предназначен для легкой компиляции различных вариантов. Поэтому, если вы хотите изменить настройки компиляции с отладки на выпуск или одноточечную, она автоматически определяет множество изменений.

Недостатком является то, что синтаксис очень утончен, а за пределами веб-сайта boost нет хорошей документации. Но я думаю, что Perforce Jam так же плох в этом отношении.

+1

Согласитесь, синтаксис и весь процесс не настолько интуитивно понятный –

8

Учитывая выбор инструментов для сборки, я бы не перешел на затор. Есть лучшие системы построения - CMake/SCons для C/C++, qmake для Qt, Ant для Java, NAnt и MSBuild для .NET и т. Д. Они, возможно, не технически превосходят, но они будут менее болезненны в использовании, потому что гораздо больше людей знакомы с ними (с другой стороны, они могут быть технически превосходными, конечно: D).

+0

+1 для SCons. :-) – Parappa

+0

-3 для SCons. См. Эту серию блога из трех частей: http://www.electric-cloud.com/blog/2010/03/08/how-scalable-is-scons/ http://www.electric-cloud.com/blog/ 2010/07/21/a-second-look-at-scons-performance/http://www.electric-cloud.com/blog/2010/08/11/the-last-word-on-scons-performance/ –

+5

Извините, в марте 2009 года моя машина времени работала неправильно, иначе я бы отправился в августе 2010 года, узнал о каких-либо проблемах с масштабируемостью, а затем вернулся в 2009 году, чтобы не включать в себя: :) Отклонитесь, Скот может стать проблематичным, если ваш проект становится очень большим, но для большинства проектов с небольшим и средним размером это прекрасно.Редактировать: Полное раскрытие - я использую CMake :) –

28

Я использую Boost Jam для моей кросс-платформенной разработки на C++. Я выбрал его, потому что

  • Я хочу, чтобы мой код, чтобы построить везде подталкивания строит,
  • он использует относительно простой декларативный язык, чтобы определить, как строить цели и
  • он может строить все различные ароматы ваших (например, debug vs. release, 32-bit или 64-bit, msvc vs. gcc) в одном вызове с абсолютным минимумом связанных с ароматом исключений в объявлениях построения.

Вы можете уточнить общие правила с настройками, специфичными для аромата, вместо того, чтобы писать отдельные правила для каждой перестановки вкуса. Синтаксис не совсем то, что я бы выбрал, но его не так сложно привыкнуть.

Эта статья сравнивает Повысьте Пробку с CMake, SCons и Eclipse CDT: http://syrcose.ispras.ru/2009/files/04_paper.pdf

Я понимаю, что подталкивания Jam является ответвлением Perforce Jam поддерживается сообществом Boost, и что неволей Jam не активно поддерживается (release notes имеют последнее обновление в апреле 2003 года).

Конечно, если вы не заботитесь о кросс-платформенном развитии, есть более простые способы, как это упомянуто другими. Лично я сохраняю смысл пересматривать Eclipse CDT; он не казался годным к употреблению 5 лет назад, но я слышал, что он прошел долгий путь.

+0

Поскольку этот ответ все еще иногда появляется, я хочу отметить, что моя последующая работа переключилась на CMake. Хотя это не идеально, я бы порекомендовал CMake сегодня над Boost Jam из-за поддержки IDE и популярности/«общеизвестности». Eclipse CDT очень полезен как IDE, но не обеспечивает систему сборки. –

Смежные вопросы