2012-02-12 22 views
12

非制限的なライセンスを持つクロスプラットフォームのC++のlighweightコンフィグレーションライブラリを探しています。セクションがある標準プロパティーファイルよりも複雑なものが必要ですが、XMLを使用したくありません(あまりにも多くの記述:-))。C++軽量コンフィグレーションライブラリ

私は、設定をこのように書きたいと思います:

render = 
{ 
    window = 
    { 
     width = 800, 
     height = 600 
    } 
} 
+1

[libconfig](http://www.hyperrealm.com/libconfig/)が見つかりました。私はうまく見えますが、エラー報告の例外を使用しています... – runnydead

+1

私はまた、libconfigはかなり良いと思います。私はC++ APIにいくつかの問題があり、Javaの実装ではないようです(つまり、C/C++アプリケーションだけが設定ファイルを読むことができます)が、今のところ私のgo-to configライブラリです。 –

答えて

13

ブーストのproperty_treeがあります。 licenseは商業的に使用できます。

あなたの例:

ptree pt; 
pt.put("render.window.width", 800); 
pt.put("render.window.height", 600); 

これは、例えばすることができますJSON

write_json("my_config.json", pt); 

にエクスポートすることが、その後

{ 
    "render": 
    { 
    "window": 
    { 
     "width": 800; 
     "height": 600; 
    } 
    } 
} 

ようにあなたは、XML、INIおよびINFOにエクスポートすることができ、同じように見えるであろう。

+0

私の経験ではBoostは軽量ライブラリとはかけ離れていますが、有望なので見ていきます。 – runnydead

+4

@hubrobin:この作業を行うためにBoostライブラリ全体、IIRCは必要ありません。 Boostには、個々のライブラリを抽出するために特別に設計された[bcp](http://www.boost.org/doc/libs/release/tools/bcp/doc/html/index.html)というツールがあります。 –

2

またJsonCppを試してみて、あなたが好きなものと非常に似た構文を持っている、Jsonであなたの設定ファイルを書き込むことができます。

// Configuration options 
{ 
    // Default encoding for text 
    "encoding" : "UTF-8", 

    // Plug-ins loaded at start-up 
    "plug-ins" : [ 
     "python", 
     "c++", 
     "ruby" 
     ], 

    // Tab indent size 
    "indent" : { "length" : 3, "use_space": true } 
} 

MIT License下にあるので、それは非常に寛容です。