2010-12-20 12 views
7

設定ファイルにアプリケーションの設定を保存したいと思います。 Linuxでは、これは/home/user/.config/app.confであり、WindowsではC:¥Documents and Settings¥username¥Application Data¥app.confとなります。もちろん、別の場所に格納することもできます。したがって、正しい場所を取得する唯一の方法は、プラットフォーム固有の関数を使用することです。設定ファイル(C/C++)のクロスプラットフォームパスの取得

十分にテストされたクロスプラットフォームがあるかどうかを知るために、私は自分自身をコーディングして間違っていても構いません(私はテストのためにこれらのプラットフォームにアクセスできないので)これを行うことができるC/C++ライブラリですか? #definesの束を使用する.h/.hppファイルは、広く使われている限り、うまくいくでしょう。

私はBoostのプログラムオプションライブラリが(設定ファイルを読み込むことができるので)できるとは思っていましたが、それはできないようです。

提案がありますか?

答えて

3

もう一度やってきたので、唯一のものは巨大なフレームワークの一部であり、小さなプログラムでは実用的ではないため、弾丸に噛み付いて独自のソリューションを作成することにしました。

私はそれがどのような目的のために誰でも使用するので、自由にパブリックドメインに置かれhttps://github.com/Malvineous/cfgpath

でコードを公開しています。標準プラットフォームAPI以外の依存関係はありません。ちょうど#include単一のファイル.hと機能の1つを呼び出してください。リポジトリ内の他のファイルはテストコードだけですが、あなたが私に送るつもりの変更をしない限りは必要ありません(してください)

残念ながら私は私の元の投稿で言ったように私はしません多くのプラットフォームに簡単にアクセスできるため、より多くのプラットフォームのサポートを追加するためのパッチをいくつか入手してください。

0

私はboost filesystem librariesが役立つと思います。プラットフォームに依存しないパス文法を持っています。

+2

Linuxでは/home/user/.configとして表示されますが、Windowsでは自動的にC:\ Documents and Settings \ username \ App Dataになる文法は何ですか? – Malvineous

+0

dear lord、* boost *はホームディレクトリの検索にのみ使用されていますか?過剰殺戮について語る私はMinGWでそれをコンパイルしなければならない人になりたくありません。 – Wyatt8740

3

QtのQSettingsクラスがこれを行います。

オン* nixの設定は$ HOME/.configに保存されます。 Windowsでは、設定はレジストリに保存されます。 Macでは設定は$ HOME/Library/Preferences /に保存されます。

+0

'QDesktopServices :: storageLocation(QDesktopServices :: DataLocation)'を試してください。 http://qt-project.org/doc/qt-4.8/qdesktopservices.htmlを参照してください。 –

関連する問題