boost 라이브러리

www.boost.org

집단이 제작한 오픈소스 C++ 라이브러리. 여러 컴파일러를 지원하고 C++ Standard Libraries 와 호환된다.

이들이 개발한 라이브러리 일부는 Technical Report 1 (TR1) 로써 C++11 에 채택되었고, 그 외 다른 라이브러리들이 TR2 로 제안되어 진행중이다.

설치

http://www.boost.org/users/download/ 이곳을 방문하여 최신 release 를 다운받자. beta 도 나쁘진 않지만 안정성 측면에서 release 가 낫다.

.zip 으로 압축된 것보다는 .7z 으로 된 것이 절반가량 용량이 더 적다. 다운을 받고 적당한 곳에 압축을 풀면 아래의 구조를 볼 수 있다.

boost_1_53_0
  ㄴ boost        : 헤더파일이 있는 곳
  ㄴ libs         : lib feature 들의 문서와 예제가 있는 곳
  ㄴ doc          : 문서 (BoostBook) 의 소스가 있는 곳
  ㄴ tools        : Boost.Build, quickbook 등의 유틸리티가 있는 곳
  ㄴ ...
  

이외는 알 필요가 없다.

바이너리(.lib)를 필요로하는 라이브러리

Boost 라이브러리 대다수는 헤더파일만 있으면 동작한다. 하지만 일부 라이브러리들은 컴파일된 바이너리(.lib) 를 링크해줘야 동작한다.

아래 라이브러리들은 바이너리(.lib) 를 필요로 한다.

  • Filesystem
  • GraphParallel
  • IOStreams
  • MPI
  • ProgramOptions
  • Python
  • Regex
  • Serialization
  • Signals
  • System
  • Thread
  • Wave

아래 라이브러리들은 부분적으로만 바이너리를 필요로 하는 것들이다. (즉, 일부 기능을 사용하기 위해서만 바이너리가 필요)

  • DateTime - 예를 들어 to_string / from_string 이나 serialization 기능을 사용하려면 바이너리가 필요.
  • Graph
  • Math
  • Random
  • Test

빌드하기

위에서 일부 라이브러리가 바이너리(.lib) 를 필요로 한다는 것을 알았고 이제 빌드를 수행하여 바이너리를 생성해보자.

위 다운로드에서 windows 용을 받았다면 기본적으로 Visual C++ 를 통해 빌드를 수행한다고 가정한다.

빌드에는 여러 방법이 있지만 여기선 가장 간단한 방법을 소개한다. 우선 압축을 푼 boost 루트에서 아래 커맨드를 순차적으로 실행1)한다.

bootstrap
.\b2

첫번째 명령을 통해 빌드 수행에 필요한 준비작업을 한다. 수행이 종료되면 루트에 b2.exe 나 bjam.exe 가 생성됨을 볼 수 있다.

두번째 명령을 수행하면 본격적인 컴파일을 시작한다.

빌드를 마치면 두개의 디렉토리가 생성되는데 bin.v2 는 중간파일이 있는 곳으로 지우면 되고, stage/lib 가 생성된 바이너리가 있는 곳으로 링크할 .lib 파일들이 있는 곳이다.

사용

이제 실제 프로젝트에 사용하려면 Visual C++ 에서 아래의 디렉토리들을 각각 설정에 추가한다.

  • boost : 추가 include 디렉토리로써 추가한다.
  • stage/lib : 추가 lib 디렉토리로써 추가한다.
1) cmd 를 통해 커맨드라인 모드로 들어가 실행한다.