2012-02-12 65 views
12

我正在尋找具有非限制性許可證的跨平臺C++輕量級配置庫。我需要比標準屬性文件更復雜的部分,但我不想使用XML(寫太多:-))。C++輕量級配置庫

我還想寫配置是這樣的:

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

我找到了[libconfig](http://www.hyperrealm.com/libconfig/)。我看起來不錯,但它使用例外錯誤報告... – runnydead 2012-02-12 11:27:12

+1

我也認爲libconfig是相當不錯的。我在C++ API中遇到了一些問題,而且似乎沒有Java的實現(這意味着只有C/C++應用程序可以讀取配置文件),但現在它仍然是我的前往配置庫。 – 2014-02-09 01:42:36

回答

13

還有提升的property_treelicense允許商業用途。

你例如:

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和信息的方式相同。

+0

以我的經驗.. Boost遠不是輕量級的庫,但我會看看它,因爲它看起來很有前途 – runnydead 2012-02-12 11:24:35

+4

@hubrobin:你不需要整個Boost庫來完成這項工作,IIRC。 Boost有一個名爲[bcp](http://www.boost.org/doc/libs/release/tools/bcp/doc/html/index.html)的工具,專門用於提取單個圖書館。 – 2012-02-12 13:18:53

2

您也可以嘗試JsonCppJson,其中有一個非常類似的語法給你喜歡的人寫你的配置文件:

// 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所以這是非常寬容的。