웬디의 기묘한 이야기

글 작성자: WENDYS
반응형

Boost Library Download and Build

C++ 필수 라이브러리 중 Boost Library에 대해 설치 및 사용법을 정리합니다. Boost는 공식 홈페이지에서 다운로드 가능하며, 주기적으로 업데이트가 되고 있습니다.

https://www.boost.org/users/download/

 

Boost Downloads

Current Release Version 1.70.0 April 12th, 2019 06:04 GMT New Libraries: Outcome, Histogram. Updated Libraries: DownloadsPlatformFileSHA256 Hash unixboost_1_70_0.tar.bz2430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778boost_1_70_0.tar.gz882b

www.boost.org

Boost 1.70.0

현재까지 나와있는 최신 릴리즈 버전은 boost 1.70.0 버전입니다.

아래 Downloads 중 Windows의 압축 파일을 다운로드합니다.

 

Boost Download 공식 홈페이지

 

압축 해제 또는 설치

라이브러리의 크기가 작지 않기 때문에 시간이 아주 오래 걸리니 처음 압축 해제할 위치를 개발 시 참조할 위치로 정해야 합니다. 안 그러면 파일을 이동하는 시간도 무시무시하게 걸려요 다운로드할 땐 200MB도 안되지만 압축 해제 후 빌드까지 하면 10GB까지 용량이 늘어나니 저장공간도 충분히 필요합니다.

 

 

boost에서 bootstrap.bat, bootstrap.sh file

 

 

여기서 중요한 주목해야 할 파일이 두 가지가 있습니다.

bootstrap.sh bootstrap.bat 파일인데요, bootstrap.bat 파일을 실행시켜주게 되면 실제 빌드에 필요한 b2.exe, bjam.exe 파일이 생성되게 됩니다. 이렇게 나온 이유는 플랫폼에 따라 유연하게 라이브러리를 제공하기 위해서 직접 빌드하게 하는 방법을 채택한 것으로 보입니다.

 

이제 저 실행파일을 이용해서 라이브러리를 빌드할 차례입니다.

 

Visual Studio 2019 Boost Build

윈도우에서는 비주얼 스튜디오를 사용하니 MSVC로 빌드를 하면 됩니다. 저는 최신 버전은 visual studio 2019를 사용하기 때문에 CMD 창을 열어서 아래와 같이 옵션을 사용하여 빌드를 시작합니다.
address-model= 32bit, 64bit 각각 빌드를 하시면 됩니다.
b2 -j4 -a --toolset=msvc-14.21 variant=debug,release link=static threading=multi address-model=32 lib32
b2 -j4 -a --toolset=msvc-14.21 variant=debug,release link=static threading=multi address-model=64 lib64
마지막의 lib32, lib64는 빌드 폴더명을 지정하는 값이기 때문에 다른 값을 입력해도 상관없으며, 빌드 버전은 아래 표를 참고하시면 됩니다.
MSC    1.0   _MSC_VER == 100
MSC    2.0   _MSC_VER == 200
MSC    3.0   _MSC_VER == 300
MSC    4.0   _MSC_VER == 400
MSC    5.0   _MSC_VER == 500
MSC    6.0   _MSC_VER == 600
MSC    7.0   _MSC_VER == 700
MSVC++ 1.0   _MSC_VER == 800
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)

만약 다른 옵션이 궁금하다면 --help 옵션을 통해서 확인이 가능합니다.

b2.exe --help

이제 빌드를 시작하게 되면 정신과 시간의 방에서 빌드가 됩니다...

 

당신은 지금 이 글을 이틀째 보고 있는 게 아닐까 조심스럽게 예상해봅니다!

자! 그럼 이제 빌드가 끝났을 테니 visual studio에서 사용할 수 있도록 적용합니다.

 

 

Visual Studio Import Setting

Boost Library를 사용하기 위해선 lib 경로를 추가해주고, header를 include 해주어야 합니다.

 

TIP Boost Library 경로를 프로젝트마다 C:\xxx, D:\xxx 등으로 입력하게 되면 환경이 바뀌었을 때 또 프로젝트 설정을 변경하는 등의 번거로움이 따르게 되기 때문에 전 시스템 환경변수를 이용하는 것을 선호하는 편입니다.

 

 

Boost Root 환경 변수 설정

 

 

Visual Studio - Include Directories

 

 

Visual Studio Linker - Additional Library Directories 설정

 

 

Visual Studio에서도 위와 같이 환경변수의 이용이 가능합니다. 저렇게 설정하게 되면 앞으로 boost 버전이 변경되거나, 개발 PC의 변경, Boost Library 위치가 변경되더라도 환경변수 하나만 변경하면 바로바로 적용할 수 있게 되므로 확실히 번거로움이 줄어들게 될 거예요

 

저는 경로가 조금 다르게 설정되어있지만 위의 순서대로 하셨다면 %BOOST_ROOT%\stage\에서 Platform Win32와 Win64를 나누어서 적용하시면 됩니다.

중요 32bit와 64bit는 lib가 다르기때문에 Configuration, Platform 설정에서 Debug, Release, Win32, Win64 각각 설정해주셔야 합니다.

 

위와 같이 라이브러리 링크가 완료되었으면 필요한 header를 include 해서 사용하면 됩니다.

만약 boost::asio를 사용하는 경우 다음과 같이 boot/asio.hpp를 include 하게 되면 lib는 추가가 되어있기 때문에 바로 사용이 가능합니다.

#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>

 

TIP boost_1_XX_0\libs\asio\example\ 등 libs에 모든 기능에 대해 example code가 있으므로 참고하시면 좋습니다.

이제 Boost Library를 이용하여 멋진 개발을 해보세요!

 

반응형