<예제, 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:
- 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.
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.
- -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 |