Распространение с библиотекой Boost?

Я новичок в использовании boost и нигде не могу найти документацию о том, как распространять ваше приложение при использовании boost?

Многие из библиотек являются общими библиотеками, я не ожидаю, что у моих пользователей будет установлен boost, я использую только одну библиотеку (регулярное выражение), поэтому есть ли простой способ упаковать библиотеку регулярных выражений с моим приложением без компиляции со статическим версия?


person iQ.    schedule 11.09.2009    source источник
comment
Хочу раздать для линукса и в будущем для винды. Я также оставлю его открытым исходным кодом, поэтому я предоставлю исходный код для сборки пользователями, а также готовые двоичные файлы.   -  person iQ.    schedule 11.09.2009
comment
Если вы используете только регулярное выражение, велика вероятность того, что ваш компилятор уже поддерживает регулярное выражение до TR1. Попробуйте #include ‹regex›.   -  person anno    schedule 11.09.2009
comment
да, это одна из причин выбора ее вместо другой библиотеки регулярных выражений, которая не требует сборки. Хотя я не хотел рисковать, если TR1 не полностью поддерживается всеми компиляторами.   -  person iQ.    schedule 11.09.2009


Ответы (1)


линукс

Для бинарного дистрибутива я рекомендую использовать управление пакетами дистрибутива, которое должно позаботиться о любых зависимостях. Некоторые коммерческие приложения просто используют бинарные BLOB-объекты, и вам нужно установить версию boost самостоятельно.

Поиск библиотек в Linux немного сложнее. Он не загружает автоматически общие объекты из текущего каталога, если они связаны во время компиляции (в отличие от загрузки во время выполнения с помощью dlopen).

Вы должны использовать переменную env LD_LIBRARY_PATH или использовать rpath. Оба имеют свои недостатки.

Окна

Нет никакого способа обойти, включая dll. Обычный подход — поместить все в каталог и заархивировать.

Оба

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

В любом случае, большинство библиотек в boost содержат только заголовки, регулярное выражение не входит в их число. Достаточно включить dll для этого модуля. В Linux вы можете проверить, с какими общими библиотеками скомпилирован ваш двоичный файл, используя:

ldd binary
person ebo    schedule 11.09.2009
comment
Да, я собирался просто предоставить файлы .so и .dll для готовых приложений отдельно от исходного кода. Итак, вы говорите, что это сработает, просто взяв скомпилированные файлы lib? С регулярным выражением, которое я знаю, как вы сказали, это не только файл заголовка, поэтому я также предоставлю встроенную библиотеку регулярных выражений с источником. - person iQ.; 11.09.2009
comment
Скомпилированные файлы lib? Пользователям нужны все связанные общие библиотеки. Для Linux вы должны полагаться на управление пакетами. - person ebo; 11.09.2009
comment
извините, я имел в виду предоставление предварительно созданной библиотеки регулярных выражений вместо того, чтобы полагаться на то, что пользователь создаст ее. С версией исходного кода мне не о чем беспокоиться, я позволю пользователю взять на себя ответственность за получение соответствующих библиотек, если они захотят его собрать. Если все работает, просто предоставив файлы .so или .dll, это хорошо. Я слышал, что у Boost есть инструмент, с помощью которого он может извлекать и находить все библиотеки, которые использует ваше приложение, кто-нибудь знает? - person iQ.; 11.09.2009
comment
Так что ты хочешь знать? Можно предоставить файлы .so. Это хороший стиль? Вероятно, нет, вы должны использовать управление пакетами для библиотек. - person ebo; 12.09.2009
comment
а что, если я скажу, что создаю общую библиотеку? Итак, я пытаюсь найти способ распространять свою библиотеку, которая также использует немного другой библиотеки... лол. Я немного не понимаю, как распространять его с этими зависимостями. - person iQ.; 12.09.2009
comment
В Linux действительно можно положиться на диспетчер пакетов, но что, если дистрибутив Linux поставляется с устаревшей версией Boost и вам нужны новые функции? В этом сценарии вопрос о распространении частей Boost (а не полагаться на менеджер пакетов) имеет смысл. - person MakisH; 29.01.2018