Подтвердить что ты не робот

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

Что такое Boost Jam и Jam стоит перейти на?

Я понимаю, что jam - это построенная система, созданная perforce, но я не уверен, что раздутие и обычное варенье различны.

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

В этой статье сравнивается Boost Jam с CMake, SCons и Eclipse CDT: http://syrcose.ispras.ru/2009/files/04_paper.pdf

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

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

Ответ 3

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

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

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

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

Ответ 4

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