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