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

Это невозможно сделать.

Neo4j - это приложение Java, и вам нужно JVM для его запуска.

Что вы можете попробовать: IKVM.NET запустить Neo4j в .NET VM и вызывать эти методы из кода C #.

Вы упомянули, что хотите встроенные db для тестирования интеграции. Я предлагаю запустить новый экземпляр Neo4j как часть тестового прогона. Только для целей тестирования.

29
задан Coding Mash 7 September 2012 в 16:17
поделиться

10 ответов

По сути, ваш вопрос сводится к тому, «имеет ли смысл иметь [свободную библиотеку xyz] в качестве зависимости для проекта с открытым исходным кодом C ++».

Теперь рассмотрим следующую цитату из Страуструпа, и ответ на самом деле нет ничего сложного:

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

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

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

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

44
ответ дан Konrad Rudolph 7 September 2012 в 16:17
поделиться

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

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

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

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

28
ответ дан Anders Hansson 7 September 2012 в 16:17
поделиться

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

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

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

12
ответ дан Diomidis Spinellis 7 September 2012 в 16:17
поделиться

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

4
ответ дан 7 September 2012 в 16:17
поделиться

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

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

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

  • Редактировать: Причина, по которой мы не можем использовать его на работе, заключается в том, что наше программное обеспечение должно быть переносимым примерно на 7 различных платформ и на 4 компилятора. Таким образом, мы не можем использовать повышение, потому что не было доказано, что оно совместимо со всеми нашими целями, поэтому причина техническая. (У нас все хорошо с частью OpenSource и Boost License, так как иногда мы используем Boost для других целей)
4
ответ дан Robert Gould 7 September 2012 в 16:17
поделиться

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

3
ответ дан Peter Mortensen 7 September 2012 в 16:17
поделиться

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

1
ответ дан David 7 September 2012 в 16:17
поделиться

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

2
ответ дан Drew Stephens 7 September 2012 в 16:17
поделиться

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

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

1
ответ дан David A. 7 September 2012 в 16:17
поделиться

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

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

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

3
ответ дан Simon Steele 7 September 2012 в 16:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: