LINUX.ORG.RU

файлы ресурсов для либы


0

1

Превращаю код, который раньше был экзешником, в библиотеку.

Раньше экзешник просто читал файл из директории cwd/resources. Там текстовики, картинки и прочие блобы. Но для либы читать из cwd как-то не подходит, да?

Есть какой-нибудь стандартный для либ способ внедрять и вытаскивать из них ресурсы?

Очень желательно кроссплатформенный (Lin/Mac/Win). Если кроссплатформенно не выйдет, можете кинуть кошерный спосооб для каждой платформы, кто какую знает?

Прежде чем написать вопрос, погуглил. Но в интернетах на этот счет разброд мнений :(

язык - кресты

★★★★☆

Так-то /usr/share/libmy + скрипт в make install или что у тебя там в качестве rpm. На виндусе не знаю, наверное инсталлер в духе GTK, который путь до dll-ки пропишет и переменную MY_RESOURCES_PATH=«c:\где\оно\там\щас». На маке: если юникс-стайл, то аналогично /usr/share (тут уж точно make install), либо кастомный .framework, кури маны Xcode, как фреймворки делать.

arturpub ★★
()
Ответ на: комментарий от nerdogeek

у меня еще одна «офигительная идея»

можно вообще отказаться от либы как таковой

заставить человеков юзать код как git submodule (все равно под Apache2 License)

тогда все ресурсы можно будет попросить продолжать сваливать в cwd/resources и вообще ничего не менять :-)

насколько адекватен такой подход? так кто-нибудь делает?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от arturpub

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

arturpub ★★
()

Класть в $SHAREDIR или $DATADIR, который задается во время configure. Единственный кошерный способ на Linux.

tailgunner ★★★★★
()

Есть, никто не мешает библиотекам поступать делать также как и приложениям - создавать в share поддиректорию и ставить туда свои данные. Алсо, можно использовать в процессе сборки file2c, который делает из любого бинарника сишный код, где это бинарник определён как char[].

slovazap ★★★★★
()
Ответ на: комментарий от nerdogeek

Нищеброд, ты опять закукарекал?

anonymous
()

есть два пути для хранения ресурсов в либах.

1 - поиск ресурсов (ака файликов) в файловой системе по спец заданным путям из конфига или задефайненные.

2 - хранение ресурсов внутри либы, очевидно это хороший способ точно иметь ресурсы, ибо в первом случае ресурс может быть удален или поврежден.

MikeDM ★★★★★
()
Последнее исправление: MikeDM (всего исправлений: 1)

[тред отмечен как решенный. решение: писать в shared-папку (путь задается при сборке - препроцессор заменяет переменную в каком-нибудь config.h на конкрентный путь до папки), либо hexdump'ом сдампить внутрь самой либы.]

stevejobs ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.