2010-12-20 15 views
7

Chciałbym zapisać ustawienia mojej aplikacji w pliku konfiguracyjnym. Pod Linuksem (i Mac?) To (może) być /home/user/.config/app.conf, podczas gdy pod Windows to (może) być "C: \ Documents and Settings \ nazwa_użytkownika \ Dane aplikacji \ app.conf". Można go oczywiście przechowywać w innym miejscu, więc jedynym sposobem uzyskania właściwej lokalizacji jest użycie funkcji specyficznej dla platformy.Uzyskiwanie ścieżki między platformami dla pliku konfiguracyjnego (C/C++)

Wystarczy powiedzieć, że nie chcę ryzykować kodowania tego samodzielnie i źle się dzieje (ponieważ nie mam dostępu do niektórych z tych platform do testowania), więc każdy wie, czy istnieje dobrze przetestowana platforma Biblioteki C/C++, które mogą to zrobić? Plik .h/.hpp, który używa grona #defines również byłby w porządku, o ile jest szeroko stosowany.

Myślałem, że biblioteka opcji programu Boost może być w stanie (jak może załadować pliki konfiguracyjne), ale nie wydaje się to możliwe.

Wszelkie sugestie?

Odpowiedz

3

To znowu się pojawiło, więc postanowiłem ugryźć bullet i stworzyć własne rozwiązanie, ponieważ jedyne istniejące są częścią ogromnych frameworków i niepraktyczne dla małych programów.

publikuję kod na https://github.com/Malvineous/cfgpath

Jest on umieszczony w domenie publicznej tak swobodnie korzystać każdy, w dowolnym celu. Nie ma żadnych zależności poza standardowymi interfejsami API platformy. Po prostu #include pojedynczy plik .h i wywołaj jedną z funkcji. Pozostałe pliki w repozytorium to tylko kod testowy, nie potrzebujesz ich, chyba że chcesz wprowadzić zmiany, które zamierzasz wysłać do mnie (proszę!)

Niestety tak jak powiedziałem w moim oryginalnym wpisie, nie chcę mieć łatwy dostęp do wielu platform, więc mam nadzieję, że dostanę kilka łatek, aby dodać obsługę większej liczby platform.

0

Myślę, że boost filesystem libraries powinien pomóc. Ma gramatykę niezależną od platformy.

+2

Jakie gramatyki używam, które pojawią się jako /home/user/.config pod Linuksem, ale automatycznie staną się C: \ Documents and Settings \ nazwa_użytkownika \ Dane aplikacji w systemie Windows? – Malvineous

+0

drogi Panie, * doładowanie * używane tylko do znalezienia katalogu domowego? Dyskusja na temat przesady. Nie chcę być tym, który musi to skompilować w MinGW. – Wyatt8740

3

Klasa Qt's QSettings zrobi to za Ciebie.

Włącz * nix ustawienia zostaną zapisane w $ HOME/.config. W systemie Windows ustawienia będą przechowywane w rejestrze. Na Macu ustawienia będą przechowywane w $ HOME/Library/Preferences /.

+0

Wypróbuj 'QDesktopServices :: storageLocation (QDesktopServices :: DataLocation)'. Zobacz http://qt-project.org/doc/qt-4.8/qdesktopservices.html –

Powiązane problemy