【发布时间】:2010-08-02 17:04:08
【问题描述】:
我正在用 C++ 为 Linux 编写一个程序,我需要存储一些额外的数据,例如图像。类似的东西通常在 Linux 上的 /usr/share 中。
用户可以决定在哪里安装软件(我正在使用 CMake),因此我应该使用 /usr/share、/usr/local/share、/home/theuser/somefolder/share 或其他,具体取决于他安装它的地方。
我通常通过找出二进制文件的绝对路径、从路径中删除尾随的“bin”并将其替换为“share”来实现这一点。然而,这很麻烦,而且不是最不优雅的,所以我想知道其他人是怎么做到的。我正在使用 boost,但我找不到任何相应的功能。
我只需要这个项目的共享目录,但我也对你如何使用 etc 目录感兴趣(我的方法在那里不太适用,因为二进制文件可以在 /usr/bin 中,而配置文件在 /etc)
【问题讨论】:
-
无论你的算法有多好,它都不会在 100% 的安装中起作用。所以给用户一种手动指定目录的方法,比如命令行参数或者环境变量。