<예제, boost::asio 필요 라이브러리 >

# msvc-14.0 : vc++ 2015

# msvc-12.0 : vc++ 2013

# 64bit : address-model=64

bjam.exe toolset=msvc-11.0 link=static runtime-link=static --with-system --with-date_time --with-regex --with-thread -j 4 stage






출처 : http://www.viper.pe.kr/cgi-bin/moin.cgi/Boost


3.1. bjam 사용법 [Bottom] [Top]

Boost 라이브러리는 대부분 Template 으로 구성되어 있다. 하지만 regex, thread 와 같이 빌드가 필요한 라이브러리를 포함하고 있다. bjam 은 이런 라이브러리들을 빌드와 설치를 자동화 해주기 위한 프로그램으로 직접 빌드해서 사용해도 되고 아래의 링크에서 다운받아서 사용해도 된다.

  • 다운로드 - http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941&release_id=643622

  • 사용법
    bjam [options] [properties] [install|stage]
    
  • Targets 과 관련 옵션 ([install|stage], [options])
    install
    헤더 파일과 빌드된 라이브러리 파일을 설치한다.
    --prefix=<PREFIX>

    플랫폼에 종속적이지 않은 파일(헤더 파일)을 설치할 경로를 지정한다. (기본값: [Win32] C:\Boost, [Unix계열] /usr/local)

    --exec-prefix=<EPREFIX>

    플랫폼에 종속적인 파일(바이너리 파일)을 설치할 경로를 지정한다. (기본값: <PREFIX>)

    --libdir=<DIR>

    라이브러리 파일을 설치할 경로를 지정한다. (기본값: <EPREFIX>/lib)

    --includedir=<HDRDIR>

    헤더 파일을 설치할 경로를 지정한다. (기본값: <PREFIX>/include)

    stage
    빌드된 라이브러리 파일만 설치한다.
    --stagedir=<STAGEDIR>

    라이브러리 파일을 설치할 경로를 지정한다. (기본값: ./stage)

  • 기타 옵션 ([options])
    --build-type=<type>
    미리 정의된 빌드 타입 중에서 빌드될 타입을 지정한다. 단, 각 라이브러리에서 지원하는 빌드 타입에 한해서 빌드 가능하다.
    minimal (기본값)

    - 릴리즈 모드(빌드 속성: "release <threading>multi <link>shared <link>static <runtime-link>shared")만 빌드한다.

    complete
    - 가능한 모든 타입(릴리즈/디버그, 정적/동적, 싱글/멀티 쓰레드 등)의 라이브러리를 빌드한다.
    --build-dir=DIR
    빌드 시 사용될 임시 디렉토리를 지정한다.
    --show-libraries
    빌드가 필요한 라이브러리를 보여준다.
    --layout=<layout>
    Boost 의 다양한 버전에 대한 라이브러리 파일 이름과 헤더 파일의 위치를 결정하거나 동일 시스템에서 여러 컴파일러를 사용할 경우 사용한다.
    versioned (기본값)

    - 라이브러리(바이너리) 파일의 이름에 버전, 라이브러리 이름, 컴파일러 버전을 포함한다. Boost 헤더 파일은 Boost 버전이 포함된 이름으로 생성된 <HDRDIR> 의 하위 디렉토리에 설치된다.

    system

    - 라이브러리(바이너리) 파일의 이름에 버전, 라이브러리 이름, 컴파일러 버전을 포함하지 않는다. Boost 헤더 파일은 <HDRDIR> 디렉토리에 설치된다. 이 옵션은 배포 패키지를 빌드하기 위하여 준비된 옵션이다.

    --buildid=ID
    빌드된 라이브러리 파일 이름에 지정된 ID 를 추가한다. 기본적으로는 어떤 것도 추가되지 않는다.
    --help
    도움말을 보여준다.
    --with-<library>
    지정된 라이브러리만 빌드 후 설치한다.
    --without-<library>
    지정된 라이브러리를 빌드하지 않는다. (기본값: 모든 라이브러리를 빌드한다.)
  • 빌드 속성 ([properties])
    toolset=toolset
    컴파일러를 지정한다. (VC++일 경우: msvc 사용)
    variant=debug|release
    릴리즈 또는 디버그 모드로 빌드할지 선택한다.
    link=static|shared
    정적 또는 동적(공유) 라이브러리로 빌드할지 선택한다.
    threading=single|multi
    멀티 쓰레드 지원 여부를 선택한다.
    runtime-link=static|shared
    C/C++ Runtime 라이브러리를 정적 또는 동적(공유) 라이브러리로 링크할지 선택한다.
  • 중요 옵션 ([options])
    --clean
    Targets 을 정리(제거)한다.
    -a
    라이브러리를 재빌드(Rebuild)한다.
    -n
    빌드 명령을 실행하지 않고, 출력만 한다.
    -d+2
    실행되는 빌드 명령을 출력한다.
    -d0
    빌드 메시지를 출력하지 않는다.
    -q
    에러 발생 시 작업 과정을 중지한다.
    --debug-generator
    빌드 과정과 명령을 상세히 출력한다.
    --debug-configuration
    환경 설정 사항(요구사항 검사)을 포함하여 빌드 과정과 명령을 상세히 출력한다.
    --debug-building
    Targets 의 빌드 속성을 포함하여 빌드 과정과 명령을 상세히 출력한다.
  • 빌드가 필요한 라이브러리 (--show-libraries 옵션으로 확인 가능)

    • date_time (./)

    • filesystem (./)

    • graph
    • graph_parallel
    • iostreams (./)

    • math
    • mpi
    • program_options (./)

    • python
    • random
    • regex
    • serialization
    • signals (./)

    • system (./)

    • test
    • thread (./)

    • wave

3.2. 라이브러리 네이밍(Library Naming) [Bottom] [Top]

For example, libboost_regex-vc71-mt-d-1_34.lib can be broken down into the following elements:

lib

Prefix: except on Microsoft Windows, every Boost library name begins with this string. On Windows, only ordinary static libraries use the lib prefix; import libraries and DLLs do not.

boost_regex

Library name: all boost library filenames begin with boost_.

-vc71

Toolset tag: identifies the toolset and version used to build the binary.

-mt

Threading tag: indicates that the library was built with multithreading support enabled. Libraries built without multithreading support can be identified by the absence of -mt.

-d

ABI tag: encodes details that affect the library's interoperability with other compiled code. For each such feature, a single letter is added to the tag:

  • Key

    Use this library when:

    s

    linking statically to the C++ standard library and compiler runtime support libraries.

    g

    using debug versions of the standard and runtime support libraries.

    y

    using a special debug build of Python.

    d

    building a debug version of your code.

    p

    using the STLPort standard library rather than the default one supplied with your compiler.

    n

    using STLPort's deprecated “native iostreams” feature.

    For example, if you build a debug version of your code for use with debug versions of the static runtime library and the STLPort standard library in “native iostreams” mode, the tag would be: -sgdpn. If none of the above apply, the ABI tag is ommitted.
-1_34

Version tag: the full Boost release number, with periods replaced by underscores. For example, version 1.31.1 would be tagged as "-1_31_1".

.lib

Extension: determined according to the operating system's usual convention. On most unix-style platforms the extensions are .a and .so for static libraries (archives) and shared libraries, respectively. On Windows, .dll indicates a shared library and .lib indicates a static or import library. Where supported by toolsets on unix variants, a full version extension is added (e.g. ".so.1.34") and a symbolic link to the library file, named without the trailing version number, will also be created.




'Dev > C++' 카테고리의 다른 글

C++ REST SDK (casablanca) 간단 샘플  (0) 2015.02.17
[C++11] Variadic template  (0) 2014.11.02
boost::asio 클라이언트 소켓 (timeout 기능)  (0) 2010.10.14
이미지 변환 모듈 (모바일용, GDI+)  (0) 2010.06.22
C++0x, RValue Reference  (0) 2009.05.27

+ Recent posts