编译boost.python库

来源:互联网 发布:淘宝拍卖手表骗局揭秘 编辑:程序博客网 时间:2024/03/29 17:45

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



原创粉丝点击