Получение кросс-платформенного пути для конфигурационного файла (C / C ++) - PullRequest
7 голосов
/ 20 декабря 2010

Я хотел бы сохранить настройки моего приложения в файле конфигурации.В Linux (и Mac?) Это (может) быть /home/user/.config/app.conf, в то время как в Windows это (может) быть "C: \ Documents and Settings \ username \ Application Data \ app.conf".Конечно, его можно хранить в другом месте, поэтому единственный способ получить правильное местоположение - использовать функцию, специфичную для платформы.

Достаточно сказать, что я не хочу рисковать, кодируя это сам и получая его неправильно(поскольку у меня нет доступа к некоторым из этих платформ для тестирования), кто-нибудь знает, есть ли какие-нибудь хорошо протестированные кроссплатформенные библиотеки C / C ++, которые могут это сделать?Файл .h / .hpp, который использует кучу #defines, также подойдет, если он широко используется.

Я думал, что библиотека опций программы Boost может это сделать (так как она может загружать файлы конфигурации)но, похоже, не может.

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 20 декабря 2010

Qt's QSettings класс сделает это за вас.

При * nix настройки будут сохранены в $ HOME / .config. В Windows настройки будут храниться в реестре. На Mac настройки будут сохранены в $ HOME / Library / Preferences /.

3 голосов
/ 24 августа 2013

Это снова возникло, поэтому я решил укусить пулю и создать свое собственное решение, поскольку единственные существующие - это часть огромных фреймворков и непрактичные для небольших программ.*https://github.com/Malvineous/cfgpath

Он находится в свободном доступе, поэтому любой может использовать его для любых целей.Он не имеет зависимостей, кроме стандартных API платформ.Просто #include один .h файл и вызовите одну из функций.Другие файлы в репозитории - это просто тестовый код, они вам не нужны, если вы не хотите вносить изменения, которые вы намереваетесь отправить мне (пожалуйста!)У меня нет легкого доступа ко многим платформам, поэтому я надеюсь, что я получу несколько патчей для добавления поддержки большего количества платформ.

0 голосов
/ 20 декабря 2010

Я думаю, что библиотеки файловой системы boost должны помочь. Имеет грамматику пути, не зависящую от платформы.

...