본문 바로가기

Language/C++

[C++] BOOST 라이브러리 설치

--------------------------------------------------------------------------------------------

boost c++ library homepage : http://www.boost.org/

current version 1.35.0   and BOOST JAM 3.1.16   (2008/6/6 기준)

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

--------------------------------------------------------------------------------------------

 

CodeGear RAD Studio(C++ Builder 2007) 에서 부스트 라이브러리 설치하여 사용하기

현재 boost 는 1.35.0 이 나와 있다(2008년 6월 6일 기준). 그러나 이 버전은 아직 Borland 용으로 컴파일하여

사용할 경우 안정성 및 컴파일 테스트에서 성공적이지 못해, 사용하려면 좀더 기다려야 할 것 같다.

 

그러므로 boost 1.34.1 을 사용하는 것을 추천한다.

이하 내용은 CodeGear RAD Studio 2007을 기준으로 설명하겠지만, Borland C++ Builder 6.0 에서도 다르지 않기 때문에 쉽게 적용할 수 있으리라 본다.

 

1. 준비물

   소스포지에서 다음 3가지를 다운로드 받도록 한다.

   (1) boost_1_34_1.zip :

        - 다운받는곳 : http://sourceforge.net/project/showfiles.php?group_id=7586

   (2) boost-jam-3.1.14-1-ntx86.zip :

        - (1) 번과 같은곳에서 찾을 수 있다. (단 boost jam 은 boost 설치를 위한 도구로 더 최신것을 받아도 가능하리라 

          생각한다. 그러나 일단 여기서는 이 버전을 이용하도록 하였다.

   (3) bcbboost-1_34_1-5_9_2-0.2.zip  :

        - borland 용 boost patch 이다. http://sourceforge.net/project/showfiles.php?group_id=157809

 

2. 압축풀기

   (1) 번 파일을 압축을 푼다... 디렉토리는 마음데로 정해도 된다. 압축푼 디렉토리를 사용하는 것이 아니고 압축을 풀면 

   소스가 나오고 이것을 컴파일하여 include (header files) 와 lib (library file) 들을 만들어 내어 환경을 구축하기 때문에 

   그냥 적당한 이름으로 해도 된다. 여기서는 (D:\BOOST 라고 하여 여기에 풀었다.)

   (2) 번 파일을 압축을 풀면 bjam.exe 를 찾을 수 있다. 이 파일을 (1)번 파일을 푼 위치에 있는 폴더에 복사한다.

    D:\BOOST\boost_1_34_1   <<-- D:\BOOST 에 압축을 풀었으면 여기에 복사한다.

   (3) 번 파일에는 3개의 폴더가 압축되어 있다. 이를 (1)번 푼 폴더의 각각의 위치에 가도록 압축을 푼다. [boost] [libs] 

    [tools] 라는 3개의 폴더가 있다.. 이 폴더들이 각각 찾아 가는 위치는 D:\BOOST\boost_1_34_1 가 된다.

 

3. 설정

   D:\BOOST\boost_1_34_1\tools\build\v2   에 가면 user-config.jam 파일이 있다. 이를 notepad등 텍스트 에디

  터로 열어서

 

   #using borland : 5.6.4 : "C:/Program Files/Borland/CBuilder6/Bin/bcc32" : <cxxflags>-ID:/src/spirit/boost ;
   #using borland : 5.8.2 : "C:/Program Files/Borland/BDS/4.0/Bin/bcc32" : <cxxflags>-ID:/src/spirit/boost ;
   #using borland : 5.9.2 : "C:/Program Files/CodeGear/RAD Studio/5.0/Bin/bcc32" : <cxxflags>-ID:/src/spirit/boost ;

 

   이 부분을 찾아서 아래와 같이 앞의 #을 제거한다. 단 자신이 설치한 컴파일러 버전을 확인하여 해당 라인의 것의 #을 제거하기 바란다.


   참고적으로 5.6.4 = C++ Builder 6

                   5.8.2 = Borland BDS 2006 (즉 CodeGear 로 가기전 마지막 C++ Builder)

                   5.9.2 = CodeGear RAD Studio 5.0 (RAD Studio 2007)

 

   using borland : 5.9.2 : "C:/Program Files/CodeGear/RAD Studio/5.0/Bin/bcc32" : <cxxflags>-ID:/src/spirit/boost ;

 

4. 컴파일 하기

    bjam -sTOOLS=borland --prefix=c:\BoostForBorland --without-python install

    

   을 입력 후 엔터를 치면 빌드 프로세스가 시작됩니다.  시간이 오래 걸린다. 기다리기 바란다.
   컴파일중 몇개의 오류와 몇개의 warning 등이 나타나더라도 기다리기 바란다.

   참고적으로  --prefix=c:\BoostForBorland  라고 입력한 곳에 대해서 살펴보면 컴파일하고 include 와 lib 파일들이 바

   로 여기에 만들어 지게 된다는 것이다.  그러므로 이 디렉토리 경로를 적당히 자신의 최종 BOOST 환경이라 생각하고 

   준비하기 바란다.

 

    이렇게 컴파일이 종료되면 C:\BoostForBorland 밑에 include 와 lib 폴더가 생긴다.  이들을 자신의 프로젝트의 환경 

    경로에 각각 넣어주어 사용하면 된다.

 

 

    설치가 잘했는지 검사해보는것이 어떨까....

     //---------------------------------------------------------------------------
     #include <boost/tokenizer.hpp>
     #include <string>
     #include <vector>
     using namespace std;
     using namespace boost;

    #include <vcl.h>
     #pragma hdrstop

    #include "Unit5.h"
    //---------------------------------------------------------------------------
     #pragma package(smart_init)
     #pragma resource "*.dfm"
     TForm5 *Form5;
    //---------------------------------------------------------------------------
     __fastcall TForm5::TForm5(TComponent* Owner)
      : TForm(Owner)
     {
         string s = ";;Hello|world||-foo--bar;yow;baz|";

         typedef tokenizer<char_separator<char> > stokenizer;

         char_separator<char> sep("-;|");

         stokenizer tok(s,sep);

        

         for (stokenizer::iterator i = tok.begin(); i != tok.end(); ++i)

        {

              Caption = Caption + " " + i->c_str();

        }

    }


   간단한 string token 추출 셈플이다.. 실행해 보면 오류 없으면 설치가 했다고 보는게 좋지 않을까 한다..