以我使用的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. #