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

Повысить зависимость для проекта с открытым исходным кодом на С++?

Boost означает стандартную нестандартную С++-библиотеку, которую могут использовать каждый пользователь С++. Можно ли предположить, что он доступен для проекта с открытым исходным кодом С++ или слишком большой зависимости?

4b9b3361

Ответ 1

В основном ваш вопрос сводится к "разумно ли иметь [бесплатную библиотеку xyz] в качестве зависимости для проекта с открытым исходным кодом на С++".

Теперь рассмотрим следующую цитату из Stroustrup, и ответ действительно не из легких:

Без хорошей библиотеки наиболее интересные задачи трудно сделать в С++; но, учитывая хорошую библиотеку, практически любую задачу можно упростить.

Предполагая, что это правильно (и, по моему опыту, это так), то писать проект С++ с разумным размером без зависимостей является совершенно необоснованным.

При разработке этого аргумента одна из зависимостей С++ (помимо системных библиотек), которую можно разумно ожидать от клиентской системы (разработчика), - это библиотеки Boost. Я знаю, что это не так, но это не необоснованная презумпция для программного обеспечения.

Если программное обеспечение не может даже полагаться на Boost, оно не может полагаться на какую-либо библиотеку.

Ответ 2

Посмотрите http://www.boost.org/doc/tools.html. В частности, полезная утилита bcp пригодится, если вы захотите встроить свои зависимости boost в свой проект. Выдержка из веб-сайта:

"Утилита bcp - это инструмент для извлечения подмножеств Boost, это полезно для авторов Boost, которые хотят распространять свою библиотеку отдельно от Boost и для пользователей Boost, которые хотят распространять подмножество Boost с их приложением.

bcp также может сообщать, от каких частей Boost зависит ваш код и какие лицензии используются этими зависимостями".

Конечно, это может иметь некоторые недостатки - но по крайней мере вы должны знать о возможности сделать это.

Ответ 3

Раньше я очень опасался вводить зависимости к системам, но теперь я нахожу, что зависимости не большие. Современные операционные системы поставляются с менеджерами пакетов, которые часто могут автоматически разрешать зависимости или, по крайней мере, упрощают администраторам то, что необходимо. Например, Boost доступен под Gentoo-Postage как dev-libs/boost, а под портами FreeBSD - devel/boost.

Современное программное обеспечение с открытым исходным кодом многое создает для других систем. В недавнем исследовании отслеживая зависимости пакетов FreeBSD, мы установили, что 12,357 пакетов портов в нашей системе FreeBSD 4.11 имели в общей сложности 21 135 библиотечные зависимости; т.е. для компиляции требуется библиотека, отличная от 52 библиотек, которые являются частью базовой системы. Библиотечные зависимости включали 688 различных библиотек, а количество различных внешних библиотек, используемых одним проектом, варьировалось от 1 до 38, при этом значение режима равно 2. Кроме того, 5 117 проектов использовали по меньшей мере одну внешнюю библиотеку и 405 проектов, используемых 10 или более,

В конце концов, ответ на ваш вопрос будет исходить из анализа затрат и выгод. Является ли преимущество повторного использования зрелой, широко используемой, проверенной и проверенной библиотеки, такой как Boost, и больше, чем низкая и падающая стоимость зависимости? Для любого нетривиального использования средств Boost ответ заключается в том, что вы должны идти вперед и использовать Boost.

Ответ 4

KDE также зависит от Boost.

Однако это в основном зависит от ваших целей и, тем более, от вашей целевой аудитории, а не от масштаба вашего проекта. например, TinyJSON (очень маленький проект), почти 100% Boost, но это прекрасно, потому что API, который он предоставляет, является Boost-подобным и предназначен для программистов Boost, которым нужны привязки JSON. Однако многие другие библиотеки JSON не используют Boost, потому что они предназначены для других аудиторий.

С другой стороны, я не могу использовать Boost на работе, и я знаю, что многие другие разработчики (в дневной работе) находятся в одной лодке. Поэтому, я думаю, вы могли бы сказать, что ваша цель - OpenSource, а группа, использующая Boost, - вперед. Если вы настроите таргетинг на предприятие, вы можете подумать об этом и скопировать-вставить только нужные части из Boost (и зафиксировать их поддержку) для работы вашего проекта.

  • Изменить: Причина, по которой мы не можем использовать ее на работе, заключается в том, что наше программное обеспечение быть переносимым примерно до 7 различных платформ и 4 компилятора. Так мы не можем использовать boost, потому что он не как было доказано, совместимо с все наши цели, поэтому причина технический. (Мы в порядке с OpenSource и Boost License, поскольку мы используем Boost для других вещей в раз)

Ответ 5

Это зависит. Если вы используете файл заголовка, только определенный шаблон шаблона в Boost - тогда да, продолжайте использовать его, потому что он не всасывает какую-либо общую библиотеку Boost, так как весь код генерируется во время компиляции без внешних зависимостей. Проблемы с версиями - это боль для любой общей библиотеки С++, и Boost не защищен от этого, поэтому, если вы можете вообще избежать проблемы, это хорошо.

Ответ 6

Я бы сказал, да. Оба Mandriva (Red Hat) и Ubuntu (Debian) имеют пакеты для libriaries Boost.

Ответ 7

Преимущества использования boost при написании кода на С++ значительно превышают сложность распространения открытого кода.

Я работаю над "Блокнот программиста" , и код зависит от повышения для тестов, интеллектуальных указателей и интеграции с python. Из-за этого было несколько жалоб, но большинство из них просто справится с этим, если они захотят работать над кодом. Принимая зависимость от форсирования, я решил никогда не пожалеть.

Чтобы сделать сложность немного меньше для других, я включаю в себя версии предварительно построенных библиотек для повышения уровня python, так что все, что им нужно сделать, это повысить их каталоги include.

Ответ 8

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

Ответ 9

К сожалению, да, для ubuntu они легко доступны, но для RHEL 4 & 5 я почти всегда получал их из tarballs. Они отличные библиотеки, просто очень большие... например, используя шип рельса, когда иногда вам действительно нужно, это карандаш.

Ответ 10

Все зависит от того, как вы собираетесь использовать Boost. Как сказал Диомидис, если вы собираетесь использовать некоторые нетривиальные средства от Boost, просто продолжайте. Использование библиотек не является преступлением.

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