项目c ++中配置文件的位置

时间:2015-04-02 10:02:57

标签: c++ configuration-files convention

我想知道是否存在在c ++中存储配置文件的约定。目前,我将配置文件存储在与使用它们的源代码相同的目录中。构建时我确保通过CMakeLists将它们复制到正确的位置,以便我可以以相对的方式访问它们(例如“config.cfg”iso“/foo/bar/config.cfg)以方便使用。

1 个答案:

答案 0 :(得分:5)

配置文件的做法是不可移植的,取决于操作系统。您还要问自己,您的配置是按照安装/系统还是按用户定义的。

一般情况下,将配置存储在与可执行文件相同的目录中是一个非常糟糕的主意,至少在开发完成后。通常,可执行文件可以在多个用户之间共享,因此出于安全原因应该位于除了系统管理员之外的每个人都被写保护的目录中。

对于unix / linux,您可以考虑:

  • /etc或其子文件夹,如果您的配置是按已安装的系统,
  • ~/如果是用户定义的配置。通常的做法是用点开始文件名。这个article会告诉你更多。

对于Windows系统,您应该考虑:

  • 现在通常采用的方法是registry。当然,这使用windows api并且完全不可移植。
  • C:\ProgramDataC:\Users\All users\AppData\Local的子文件夹,如果您的配置是按安装系统进行的,
  • 用户自己配置的C:\Users\%USERNAME%\AppData\Local子文件夹。 这个SO questions显示了如何找到正确的文件夹。