一般来说,这并没有规定应该如何完成,但 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
for using$(datadir)
和我们的util.cpp
andutil.h
一个简单的包装器 ( yatc_fopen()
)。我们也有yatc_find_file()
一些第三方库正在做的情况fopen()
,例如 SDL_image 或 libxml2。