• 编译boost.python库


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



  • 相关阅读:
    23. 霍纳法则(多项式求值快速算法)
    22. 欧几里德算法(求最大公约数GCD)
    [poj 2106] Boolean Expressions 递归
    [poj 1185] 炮兵阵地 状压dp 位运算
    [MOOC程序设计与算法二] 递归二
    [poj 3254] Corn Fields 状压dp
    [hdu 1074] Doing Homework 状压dp
    [hdu 1568] Fibonacci数列前4位
    [haut] 1281: 邪能炸弹 dp
    [hdu 2604] Queuing 递推 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/ygxsk/p/7694004.html
Copyright © 2020-2023  润新知