Мне было интересно, есть ли соглашение для хранения файлов конфигурации в C ++. На данный момент я храню файлы конфигурации в том же каталоге, что и исходный код, который их использует. При сборке я удостоверяюсь, что через CMakeLists скопирую их в правильное местоположение, чтобы я мог просто получить к ним относительный доступ (например, «config.cfg» iso «/foo/bar/config.cfg) для удобства.
Практика для файлов конфигурации не переносима и зависит от операционной системы. Вы также должны спросить себя, определена ли ваша конфигурация для установки / системы или для пользователя.
В общем, очень плохая идея хранить конфигурацию в том же каталоге, что и исполняемый файл, по крайней мере, после завершения разработки. В общем случае исполняемые файлы могут быть разделены между несколькими пользователями и поэтому должны из соображений безопасности находиться в каталогах, защищенных от записи для всех, кроме системного администратора.
Для unix / linux вы можете, например, рассмотреть:
/etc
или его подпапку, если ваша конфигурация соответствует установленной системе, ~/
если это пользовательская конфигурация. Обычная практика — начинать имя файла с точки. это статья скажу тебе больше. Для систем Windows, вы должны учитывать:
C:\ProgramData
или же C:\Users\All users\AppData\Local
если ваша конфигурация соответствует установленной системе,C:\Users\%USERNAME%\AppData\Local
для собственной конфигурации пользователей.