2012-02-12 2 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 및 정보에 내보낼 수 있습니다 같은 방법으로 보일 것이다.

+0

내 경험에 따르면 Boost는 경량 라이브러리와는 거리가 멀지 만 유망 해 보이기 때문에 살펴볼 것입니다. – runnydead

+4

@hubrobin : IIRC를 만들기 위해 전체 Boost 라이브러리가 필요하지 않습니다. 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 아래 그래서 아주 관대의합니다.

관련 문제