2012-02-12 25 views
12

Sınırsız lisans alan çapraz platform C++ lighweight yapılandırma kitaplığı arıyorum. Bölümler ile standart özellikler dosyasından daha karmaşık bir şeye ihtiyacım var, ama XML kullanmak istemiyorum (çok fazla yazı :-)).C++ hafif yapılandırma kitaplığı

Ben konfigürasyona bu şekilde yazmak istiyorum:

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

[libconfig] (http://www.hyperrealm.com/libconfig/) yazılımını buldum. İyi görünüyor, ama hata raporlama için istisnalar kullanıyor ... – runnydead

+1

Ayrıca libconfig oldukça güzel olduğunu düşünüyorum. C++ API'mda sahip olduğum birkaç sorun var ve Java için bir uygulama görünmüyor (bu sadece C/C++ uygulamalarının yapılandırma dosyalarını okuyabileceği anlamına geliyor), fakat şimdilik benim için hala yapılandırma kütüphanem oluyor. . –

cevap

13

boost en property_tree var. license ticari kullanıma izin verir.

Kişisel örnek:

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

Bu, örneğin can JSON

write_json("my_config.json", pt); 

ihraç edilecek ardından

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

gibi XML, INI ve INFO verebilirsiniz aynı şekilde bakacağız hangi.

+0

Tecrübemde .. Boost, hafif kütüphaneden çok uzak, ama ona bakacağım, çünkü umut verici görünüyor – runnydead

+4

@hubrobin: Bu işi yapmak için tüm Boost kütüphanesine ihtiyacın yok, IIRC. Boost, bireysel kütüphaneleri ayıklamak için özel olarak tasarlanmış [bcp] (http://www.boost.org/doc/libs/release/tools/bcp/doc/html/index.html) adlı bir araca sahiptir. –

2

Ayrıca JsonCpp denemek ve sizin gibi birine çok benzer bir sözdizimi vardır Json, sizin yapılandırma dosyalarını yazabilir:

// 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 altında mı yüzden çok müsamahakâr bu.