boost library 1.45.0 build on windows



[환경]

- Windows XP + SP3 , Windows 7
- Visual Studio 2005 , Visual Studio 2008
(위 환경은 본인이 집과 회사에서 사용하는 개발 환경이다.)


[준비물]

물론, 아래의 준비물이 꼭 다 필요한 것은 아니다.
boost library는 매우 다양한 종류의 라이브러리들이 모여 있으며,
컴파일이 필요없는 #define 매크로 형태에서부터 Template Meta Programming 형태, 
그리고 시스템 종속성으로 인해 컴파일이 필요한 형태까지 다양하다.
아래의 준비물 들은 boost를 통째로 컴파일 하기 위한 환경이며,
boost의 구성물을 선별적으로 사용하고자 한다면,
홈페이지의 Getting Started 를 참고하여 
자신이 필요한 라이브러리가 컴파일이 필요한지
필요하다면 아래의 라이브러리들에 종속성이 있는지를 확인하여 사용하는 것이 좋다.
컴파일이 필요한 라이브러리들은 개별 메뉴얼에 컴파일 방법이 소개되어 있다.

boost library source files (1.45.0)
홈페이지는 여기 , 다운로드 페이지는 여기 , 다운로드 링크는 여기

boost jam (3.1.18)
다운로드 링크는 여기

bzip2 library (1.0.6)
홈페이지는 여기 , 다운로드 페이지는 여기 , 다운로드 링크는 여기

zlib (1.2.5)
홈페이지는 여기 , 다운로드 링크는 여기

icu (icu4c 4.6)
홈페이지는 여기 , 다운로드 페이지는 여기 , 다운로드 링크는 여기

python (2.5.5)
홈페이지는 여기 , 다운로드 페이지는 여기 , 다운로드 링크는 여기

7-zip command line tool
홈페이지는 여기 , 다운로드 페이지는 여기 , 다운로드 링크는 여기


[파일 및 폴더 구성]

아래는 본인이 애용하는 빌드 자동화를 위한 폴더 및 파일 구조를 나타낸 것이다.
설치 시에 뒤에 오는 배치파일을 분석하여 본인 취향대로 수정해도 무방하다.
볼드체가 폴더명이다.

~/boost_1_45_0
         build_1_45_0
              arc
                   boost_1_45_0.7z
                   bzip2-1.0.6.tar.gz
                   zlib-1.2.5.tar.gz
                   icu4c-4_6-src.zip
                   Python-2.5.5.tgz
                   zlib-1.2.5.tar.gz
              bin
                   7za.exe
                   bjam.exe
         build.2005.bat
         build.2008.bat
         configure.jam


[배치파일 만들기]

위 파일들이 모두 갖추어졌다면 아래와 같은 내용의 배치파일을 만든다.
본인은 build.2005.bat 과 build.2008.bat 라는 이름으로 배치파일을 만들었다.
두 배치파일의 차이는 아래 볼드체로 표시된 부분이 8.0 인가 9.0 인가의 차이이다.
자신의 컴파일러에 맞게 적용하여 사용하면 되며 본인은 둘 모두를 사용하기에 
두 개의 배치파일을 만들었다.

set path=%path%;%cd%\bin;
7za x -o"%cd%\tmp" arc\zlib-1.2.5.tar.gz 
7za x -o"%cd%\tmp" "%cd%\tmp\zlib-1.2.5.tar"
7za x -o"%cd%\tmp" arc\bzip2-1.0.6.tar.gz 
7za x -o"%cd%\tmp" "%cd%\tmp\bzip2-1.0.6.tar"
7za x -o"%cd%\tmp" arc\icu4c-4_6-src.zip 
7za x -o"%cd%\tmp" arc\boost_1_45_0.7z 
set ZLIB_SOURCE="%cd%\tmp\zlib-1.2.5"
set BZIP2_SOURCE="%cd%\tmp\bzip2-1.0.6"
set PYTHON_ROOT="%cd%\tmp\Python-2.5.5"
set PYTHON_VERSION=2.5
set ICU_PATH="%cd%\tmp\icu\source\common"

pushd tmp\boost_1_45_0\tools\build\v2\build\
move configure.jam configure.jam.org
popd
copy configure.jam tmp\boost_1_45_0\tools\build\v2\build\configure.jam


pushd tmp\boost_1_45_0
bjam --prefix=%cd%\..\..\.. --toolset=msvc-8.0 --build-type=complete debug release warnings=off --without-mpi install
popd
move %cd%\..\lib %cd%\..\lib.2005
rmdir /s /q tmp

※ 주의: 현재 최신 버전들 사이의 조합에 문제가 있다.
    위의 이탤릭체로 된 배치 프로세스는 버그 회피를 위한 코드로 원래는 필요가 없다.
    (원래 clean 환경과의 비교를 위하여 1.44.0 빌드 방법을 먼저 포스팅 하였다.)
    본인도 지금 이 글을 쓰며 위 버전들에 대하여 문제를 발견하였다.
    파일 및 폴더 구성의 configure.jam은 본 블로그에서 다운로드 하기 바란다.


본인이 제공하는 configure.jam 파일과 원본 사이에는 큰 차이가 없다.
145 행의 $(.log-fd) : ignore-minus-n : ignore-minus-q ] 가 
$(.log-fd) : ignore-minus-n ] 로 변경되었을 뿐 나머지는 모두 동일하다.
( 해당 버그에 대한 수정 방법은 여기를 참고하였다. )


[인스톨]

마지막으로 위의 배치파일을 실행시키면 boost_1_45_0 폴더 하위에
include와 lib.2005 폴더가 생길 것이다.
생성되는 두 폴더를 가져다 사용하면 된다.


현재 빌드에는 boost.MPI 는 포함되어 있지 않다.
언젠가는 포함 하겠지만, 당장 필요도 없고 바쁜 관계로 무기한 보류 중이다.

현재 Python은 2.x와 3.x로 양분되어 있으며, 
2.x도 2.5 , 2.6 , 2.7 세 가지 버전이 혼재되어 쓰이고 있다.
본인은 현재 가장 널리 쓰이며 호환성 문제가 없는 2.5를 기준으로 빌드하였다.
사용자는 자기가 원하는 버전을 이용하면 되겠다.

'open source > boost' 카테고리의 다른 글

How to build the C++ boost library 1.54.0 on windows  (0) 2013.08.15
boost library 1.44.0 build on windows  (0) 2010.12.29
boost library  (0) 2010.12.28