2015-04-02 12 views
2

Мне было интересно, существует ли соглашение для хранения файлов конфигурации в C++. На данный момент я сохраняю файлы конфигурации в том же каталоге, что и исходный код, который их использует. При создании я убедился, что с помощью CMakeLists можно скопировать их в нужное место, поэтому я могу просто получить доступ к ним соответствующим образом (например, «config.cfg» iso »/foo/bar/config.cfg) для удобства.Расположение конфигурационных файлов в проекте C++

+2

Это зависит очень сильно от операционной системы. В Windows соглашение должно либо использовать реестр, либо использовать каталог установки для конфигурации по умолчанию и '% APPDATA%' для пользовательских настроек. В Linux он может * быть '~/.theusersconfig','/etc/globalconfig' и '/ install/path/defaultconfig' (но может также быть совершенно другим). На OSX я не знаю. –

ответ

4

Практика для конфигурационных файлов не является переносимой и зависит от операционной системы. Вы также должны спросить себя, определена ли ваша конфигурация для каждой установки/системы или для пользователя.

В общем, очень плохо хранить конфигурацию в такой же каталог, как и ваш исполняемый файл, по крайней мере, после завершения разработки. В общем случае исполняемые файлы могут совместно использоваться несколькими пользователями и поэтому по соображениям безопасности должны быть расположены в каталогах, защищенных от записи для всех, кроме системного администратора.

Для UNIX/Linux, вы могли бы, например, рассмотреть следующие вопросы:

  • /etc или вложенной его, если ваша конфигурация в установленной системе,
  • ~/ если это определяется пользователем конфигурации. Обычной практикой было бы начать имя файла с точки. Это article расскажет вам больше.

Для оконных систем, вы должны рассмотреть следующие вопросы:

  • обычный подход теперь идет к registry. Конечно, это использует windows api и полностью не переносится.
  • вложенная C:\ProgramData или C:\Users\All users\AppData\Local если ваша конфигурация в установленной систему,
  • вложенная C:\Users\%USERNAME%\AppData\Local для собственной конфигурации пользователей, игровые. Это SO questions показывает, как найти нужные папки.