以我使用的boost1.48为例。
首先需要运行bootstrap.bat来生成boost库的编译引擎:b2.exe,bjam.exe(很重要)。
下面是我用来编译boost.python库生成动态连接库的批处理程序:
@echo 即将编译python模块
@pause
bjam --toolset=msvc-9.0 --with-python link=shared threading=multi variant=release runtime-link=shared stage
bjam --toolset=msvc-9.0 --with-python link=shared threading=multi variant=debug runtime-link=shared stage
@echo 编译完成。
@pause
将上面的代码复制到一个文本文件中,将文件后缀名改为xx.bat,放置到boost库的根目录下执行。当然,也可以使用命令行的方式,手动输入。
注意,这种方式编译完成后,stage目录里生成的boost.python库名称含前缀lib(如 libboost_python-vc90-mt-gd-1_48.lib),如果编译程序时提示缺少boost_python-vc90-mt-gd-1_48.lib库,将 libboost_python-vc90-mt-gd-1_48.lib前面的lib删掉即可,dll同理。
简单介绍下bjam程序的输入参数:
--toolset:编译器类型。msvc-9.0是vs2008的c++编译器
--with : 编译哪些模块。-python 编译python模块
link:生成连接库类型。shared:动态链接,static:静态链接
threading:链接的线程类型,multi多线程模式。
variant:表示调试版还是发布版。
runtime:运行库链接类型。shared,动态链接。
stage:将编译好的库拷贝到state目录下。
详细参数参看:boost_1_48_0/Jamroot文件:
# Usage:
#
# bjam [options] [properties] [install|stage]
#
# Builds and installs Boost.
#
# Targets and Related Options:
#
# install Install headers and compiled library files to the
# ======= configured locations (below).
#
# --prefix=<PREFIX> Install architecture independent files here.
# Default; C:Boost on Win32
# Default; /usr/local on Unix. Linux, etc.
#
# --exec-prefix=<EPREFIX> Install architecture dependent files here.
# Default; <PREFIX>
#
# --libdir=<DIR> Install library files here.
# Default; <EPREFIX>/lib
#
# --includedir=<HDRDIR> Install header files here.
# Default; <PREFIX>/include
#
# stage Build and install only compiled library files
# ===== to the stage directory.
#
# --stagedir=<STAGEDIR> Install library files here
# Default; ./stage
#
# Other Options:
#
# --build-type=<type> Build the specified pre-defined set of variations
# of the libraries. Note, that which variants get
# built depends on what each library supports.
#
# minimal (default) - Builds a minimal set of
# variants. On Windows, these are static
# multithreaded libraries in debug and release
# modes, using shared runtime. On Linux, these
# are static and shared multithreaded libraries
# in release mode.
#
# complete - Build all possible variations.
#
# --build-dir=DIR Build in this location instead of building
# within the distribution tree. Recommended!
#
# --show-libraries Displays the list of Boost libraries that require
# build and installation steps, then exit.
#
# --layout=<layout> Determines whether to choose library names
# and header locations such that multiple
# versions of Boost or multiple compilers can
# be used on the same system.
#
# versioned - Names of boost binaries
# include the Boost version number, name and
# version of the compiler and encoded build
# properties. Boost headers are installed in a
# subdirectory of <HDRDIR> whose name contains
# the Boost version number.
#
# tagged -- Names of boost binaries include the
# encoded build properties such as variant and
# threading, but do not including compiler name
# and version, or Boost version. This option is
# useful if you build several variants of Boost,
# using the same compiler.
#
# system - Binaries names do not include the
# Boost version number or the name and version
# number of the compiler. Boost headers are
# installed directly into <HDRDIR>. This option
# is intended for system integrators who are
# building distribution packages.
#
# The default value is 'versioned' on Windows, and
# 'system' on Unix.
#
# --buildid=ID Adds the specified ID to the name of built
# libraries. The default is to not add anything.
#
# --python-buildid=ID Adds the specified ID to the name of built
# libraries that depend on Python. The default
# is to not add anything. This ID is added in
# addition to --buildid.
#
#
# --help This message.
#
# --with-<library> Build and install the specified <library>
# If this option is used, only libraries
# specified using this option will be built.
#
# --without-<library> Do not build, stage, or install the specified
# <library>. By default, all libraries are built.
#
# Properties:
#
# toolset=toolset Indicates the toolset to build with.
#
# variant=debug|release Select the build variant
#
# link=static|shared Whether to build static or shared libraries
#
# threading=single|multi Whether to build single or multithreaded binaries
#
# runtime-link=static|shared
# Whether to link to static or shared C and C++ runtime.
#