Нет никакого предписания, как это должно быть сделано в целом, но упаковщики Debian обычно устанавливают данные приложения где-нибудь в / usr / share, / usr / lib и так далее. Они также могут исправлять программное обеспечение, чтобы оно читало из соответствующих мест. Вы можете посмотреть Политика Debian для получения дополнительной информации.
Однако я могу сказать несколько слов, как я это делаю. Во-первых, я не ожидаю найти файл в одном каталоге; Сначала я создаю список каталогов, которые я перебираю в своей оболочке около fopen()
. Это порядок, в котором я считаю, что чтение файла должно быть сделано:
- текущий каталог (очевидно)
~/.program-name
$(datadir)/program-name
$(datadir)
- это переменная, которую вы можете использовать в Makefile.am. Пример:
AM_CPPFLAGS = $(ASSERT_FLAGS) $(DEBUG_FLAGS) $(SDLGFX_FLAGS) $(OPENGL_FLAGS) -DDESTDIRS=\"$(prefix):$(datadir)/:$(datadir)/program-name/\"
Это, конечно, зависит от вашего вывода с configure
и от того, как выглядит configure.ac
.
Итак, просто создайте оболочку, которая будет перебирать местоположения и получать данные из этих каталогов. Что-то вроде переменной PATH
, за исключением того, что вы реализуете итерацию.
После написания этого поста я заметил, что мне нужно очистить нашу реализацию в этом проекте , но это может послужить хорошим началом. Взгляните на наш Makefile.am
для использования $(datadir)
и наши util.cpp
и util.h
для простой оболочки (yatc_fopen()
). У нас также есть yatc_find_file()
на случай, если какая-то сторонняя библиотека выполняет fopen()
ing, например, SDL_image или libxml2.