在Linux上找到etc并共享目录

时间:2010-08-02 17:04:08

标签: c++ linux boost

我正在用C ++编写Linux程序,我需要存储一些额外的数据,比如图像。这样的东西通常在Linux上的/ usr / share中。

用户可以决定在哪里安装软件(我正在使用CMake),因此我应该使用/ usr / share,/ usr / local / share,/ home / theuser / somefolder / share等等,具体取决于在哪里安装它。

我通常会通过找出二进制文件的绝对路径,从路径中删除尾随的“bin”并将其替换为“share”来实现此目的。然而,这是非常麻烦而且不是最不优雅的,所以我想知道其他人是如何做到的。我正在使用boost,但我找不到任何相应的功能。

我只需要这个项目的共享目录,但我也对如何使用etc目录感兴趣(我的方法在那里工作不太好,因为二进制文件可以在/ usr / bin中配置文件在/ etc)

2 个答案:

答案 0 :(得分:1)

构建系统应在构建过程中将所需的安装位置作为定义传递。所以

gcc -DDATA_DIR=/custom/build/location ...

这意味着在构建代码之后无法更改安装位置,但这是确保代码知道在哪里查看的唯一方法,而无需在运行时的某处读取该信息。

答案 1 :(得分:0)

您可以使用default directories paths