boost는 C++ 기반의 유용한 라이브러리 집합입니다. 윈도우 환경 기준으로 Boost 라이브러리를 빌드해서 사용해보도록 하겠습니다.
1. 다운로드 하기
https://www.boost.org/users/download/에 접속하여 boost 소스 압축파일을 다운로드 합니다.
Prebuilt된 윈도우 바이너리를 다운로드 받을 수 있으나, 직접 빌드하는 방법을 소개하겠습니다.
https://www.boost.org/users/download
2. 빌드하기
- 압축파일을 해제합니다.
- boostrap.bat을 실행합니다. b2.exe와 bjam.exe가 생성됩니다.
- 명령 프롬프트(cmd)를 열고 압축을 푼 디렉토리로 이동합니다.
- 명령 프롬프트에서 현재 디렉터리를 Boost 디렉터리로 변경합니다.
- boost 설치를 위해 b2.exe를 실행합니다.
이해를 돕기 위해 ‘빌드 예제’를 먼제 보여드리고, 빌드 옵션 및 속성을 소개하도록 하겠습니다.
★ 예제
b2.exe -j8 -a toolset=msvc-14.2 variant=debug,release link=static threading=multi address-model=64 runtime-link=shared
가장 일반적인 빌드 조건입니다. 환경 및 옵션에 따라 다르지만 빌드 소요시간이 제법 걸립니다. 커피한 잔 드시고 오세요 🙂
★ 사용법
b2.exe [options] [properties] [install|stage]
ⓐ Option
옵션 | |
-a | 전체 재빌드 |
-j N | 병렬빌드. N은 CPU의 물리적 코어 수로 지정 |
–clean | 빌드 정리 |
–with-<library> | 특정 라이브러리만 빌드 |
–without-<library> | 특정 라이브러리만 빌드 하지 않음 |
[install 관련 옵션]: 헤더와 컴파일된 라이브러리 파일을 아래와 같이 구성된 위치에 설치함 | |
–prefix=<PREFIX> | 아키텍처 독립파일 설치 위치 Default: C:Boost (Windows) /usr/local (Linux 등) |
–exec-prefix=<EPREFIX> | 아키텍트 의존파일 설치 위치 Default: <PREFIX> |
–libdir=<LIBDIR> | 라이브러리 파일 설치 위치 Default: <EPREFIX>/lib |
–includedir=<HDRDIR> | 헤더 파일 설치 위치 Default: <PREFIX>/include |
–cmakedir=<CMAKEDIR> | CMake configuration 파일 설치 위치 Default: <LIBDIR>/cmake |
–no-cmake-config | CMake configuration 파일을 설치하지 않음 |
[stage 관련 옵션]: 컴파일된 라이브러리 파일만 stage 디렉토리에 빌드 및 설치함 | |
–stagedir=<STAGEDIR> | 라이브러리 파일 설치 위치 Default: ./stage |
※ 좀 더 자세한 옵션 설명은 명령 프롬프트 창에 b2.exe –help 를 입력하면 확인할 수 있습니다.
ⓑ Properties
toolset | 컴파일러 지정 msvc-14.2 (vs2019) / msvc-14.1 (vs2017) / msvc-14.0 (vs2015) |
variant | debug 또는 release |
link | static 또는 shared |
threading | single 또는 multi |
runtime-link | static 또는 shared |
address-model | 32 또는 64 |
3. Output 확인하기
j2.exe를 실행하고 나면, ./stage 폴더가 생성됩니다. stage폴더에 들어가면 lib 폴더가 있습니다.
앞서 보여드린 예제 옵션으로 빌드하면 (threading=multi, link=static, runtime-link=shared),
libboost_<library>-vc141-mt-x64-1_78.lib
libboost_<library>-vc141-mt-gd-x64-1_78.lib
위와 같은 이름 규칙의 lib 파일들이 잔뜩 보이게 됩니다. 규칙에 대한 설명은 아래 표를 참고해 주세요.
variant=release runtime-link=shared | -mt | /MD (Multi-Threaded DLL) |
variant=debug runtime-link=shared | -mt-gd | /MDd (Multi-Threaded Debug DLL) |
variant=release runtime-link=static | -mt-s | /MT (Multi-Threaded) |
variant=debug runtime-link=static | -mt-sgd | /MTd (Multi-Threaded Debug) |