zoukankan      html  css  js  c++  java
  • 编译Boost 详细步骤 适用 VC6 VS2003 VS2005 VS2008 VS2010

    vs2008编译boost

    【一、Boost库的介绍】

    Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。

       Boost库中比较有名的几个库:

       (1)Regex,正则表达式库;

       (2)Spirit,LL parser framework,用C++代码直接表达EBNF;

       (3)Graph,图组件和算法;

       (4)Lambda,在调用的地方定义短小匿名的函数对象,很实用的functional功能;

       (5)concept check,检查泛型编程中的concept;

       (6)Mpl,用模板实现的元编程框架;

       (7)Thread,可移植的C++多线程库;

       (8)Python,把C++类和函数映射到Python之中;

       (9)Pool,内存池管理;

       (10)smart_ptr,智能指针。

    【二、Boost库的编译】

    【Setp1 准备工作】:

    (1)Boost 下载可以到官方网站下载:

    http://www.boost.org/

    (2)安装VS2008 IDE

    【Setp2 编译Boost】

    1.打开Visual Studio 2008 命令提示窗口

    2.进入D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/boost_1_44_0/tools/jam/src

    3.执行 build.bat 会在D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/boost_1_44_0

    /tools/jam/src/bin.ntx86 生成 bjam.exe文件.

    4.Copy bjam.exe 文件到 D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/boost_1_44_0 下

    6.进入D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/boost_1_44_0 目录

    7.执行bjam.exe 编译命令,如下:

    (1)编译所有boost动态库 (release|debug),包括头文件和库文件

    bjam --toolset=msvc-9.0 --prefix=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output --without-python --build-type=complete  link=shared  threading=multi install

    (2)只编译 release 版本 regex 动态库,包括头文件和库文件

    bjam --toolset=msvc-9.0 --prefix=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output1 --with-regex link=shared threading=multi variant=release runtime-link=shared  install

    (3)只编译 release 版本 regex 动态库,包括库文件

    bjam --toolset=msvc-9.0

    --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output2

    --with-regex link=shared  threading=multi variant=release runtime-link=shared  stage

    【注意】: Boost 源代码所在路径最好全英文,不要有空格、特殊字符、中文等

    编译要花上30分钟左右(根据PC性能所定), 会在指定生成目录:

    D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output下生成对应库文件和头文件。

    8.设置开发环境

    打开VS2008 创建工程, 配置工程属性

    设置包含文件目录F:/Develop/BoostlibAndDll/include/boost-1_37/boost

    设置引用文件目录:F:/Develop/BoostlibAndDll/lib

    完成后,可以使用。

    【三、介绍Bjam使用】

    Usage:

    Bjam  [options]  [properties]  [install|stage]

    install                 Install  headers and compiled library files to the

    =======               configured locations (below).

                          在“--prefix=”指定的目录下生成所有头文件

               (boost源代码下boost文件夹下所有文件)和指定库文件

    --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=<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 the single

                         "release" version of the libraries. This

                         release corresponds to specifying:

                         "release  <threading>multi  <link>shared

                         <link>static  <runtime-link>shared" as the

                         Build variant to build.

                         complete - Attempts to 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 (default) - Names of boost

                         binaries include the Boost version

                         number and the name and version of the

                         compiler. Boost headers are installed

                         in a subdirectory of <HDRDIR> whose

                         name contains the Boost version number.

                         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.

    --buildid=ID                    Adds the specified ID to the name of built

                            libraries. The default is to not add anything.

    --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.

                                                            msvc-6.0 :  VC6.0

    msvc-7.0:  VS2003

                                                            msvc-8.0:  VS2005

                                                            msvc-9.0:  VS2008

                                                            msvc-10.0:  VS2010

    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.

                             决定是静态还是动态链接C/C++标准库

    Bjam 选项、参数说明

    --build-dir=<builddir>

    编译的临时文件会放在builddir里(编译完就可以把它删除了)

    --stagedir=<stagedir>

    存放编译后库文件的路径,默认是stage

    --build-type=complete

    编译所有版本,不然只会编译一小部分版本(相当于:
    variant=release,threading=multi;
    link=shared|static;runtime-link=shared)

    variant=debug|release

    决定编译什么版本(Debug or Release)

    link=static|shared

    决定使用静态库还是动态库

    threading=single|multi

    决定使用单线程还是多线程库

    runtime-link=static|shared

    决定是静态还是动态链接C/C++标准库

    --with-<library>

    只编译指定的库,如输入--with-regex就只编译regex库了

    --show-libraries

    显示需要编译的库名称

    【四、Bjam 生成文件的分析】

    (1)生成 Release 版本,多线程,动态链接C++标准库 的regex 动态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output2

    --with-regex   link=shared  threading=multi  variant=release  runtime-link=shared  stage

    -- 输出: boost_regex-vc90-mt.lib

    boost_regex-vc90-mt-1_44.lib

                    boost_regex-vc90-mt-1_44.dll

    (2)生成 Release 版本,多线程,静态链接C++标准库 的regex 动态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output2

    --with-regex   link=shared  threading=multi  variant=release  runtime-link= static  stage

    -- 输出: 没有这种配置

    (3)生成 Release 版本,多线程,动态链接C++标准库 的regex静态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output2

    --with-regex   link= static  threading=multi  variant=release  runtime-link=shared  stage

    -- 输出: libboost_regex-vc90-mt-s.lib

    libboost_regex-vc90-mt-1_44.lib

    (4)生成 Release 版本,多线程,静态链接C++标准库 的regex 静态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output3

    --with-regex  link=static  threading=multi  variant=release  runtime-link=static  stage

    -- 输出:libboost_regex-vc90-mt-s.lib

    libboost_regex-vc90-mt-s-1_44.lib

    --------------------------------------------------------------------------------------------------------------------

    (1)生成 Debug 版本,多线程,动态链接C++标准库 的regex 静态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output4

    --with-regex  link=static  threading=multi  variant=debug runtime-link=shared  stage

    -- 输出: libboost_regex-vc90-mt-gd.lib

    libboost_regex-vc90-mt-gd-1_44.lib

    (2)生成 Debug 版本,多线程,静态链接C++标准库 的regex 静态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output5

    --with-regex   link=static  threading=multi  variant=debug  runtime-link=static  stage

    -- 输出: libboost_regex-vc90-mt-sgd.lib

    libboost_regex-vc90-mt-sgd-1_44.lib

    (3)生成 Debug 版本,多线程,动态链接C++标准库 的regex 动态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output5

    --with-regex   link=shared  threading=multi  variant=debug  runtime-link=shared  stage

    - 输出: boost_regex-vc90-mt-gd.lib

    boost_regex-vc90-mt-gd-1_44.lib

             boost_regex-vc90-mt-gd-1_44.dll

    (4)生成 Debug 版本,多线程,静态链接C++标准库 的regex动态库

    bjam --toolset=msvc-9.0

     --stagedir=D:/05_Computer/04_3rdPatry/02Boost/boost_1_44_0/output5

    --with-regex   link=shared  threading=multi  variant=debug  runtime-link=static  stage

    -- 输出:没有这种配置

    【总结】:

    (1)       编译成功后,Bjam 都会给你生成一对一样的导入库文件或者静态库文件(如下),

    唯一不同的是两个文件名称一个在后面加上了boost版本信息, 为了让用户知道使用的boost的版本信息。

     boost_regex-vc90-xxxxx.lib

     boost_regex-vc90-xxxxx-1_44.lib

    (2)       Bjam编译选项 有4个, 理论上应该有 2*2*2*2 = 16 种配置

    ink= static| shared 

    threading= single |multi  

    variant=release|debug  

    runtime-link= static |shared

    实际使用的多为多线程, 所以 threading= multi, 这样剩下的3个选项组成的编译配置就是上面所罗列的, 其中静态链接C++标准库的boost动态库这种配置也不存在, 所以就只有4种情况。

    (3)

              link= static : 静态库。 生成的库文件名称以 “lib”开头

    link= shared : 动态库。生成的库文件名称无“lib”开头

    threading= mult : 支持多线程。 生成的库文件名称中包含 “-mt”

    variant=release  生成的库文件名称不包含 “-gd”

    variant= debug  生成的库文件名称包含 “-gd”

    runtime-link= static  生成的库文件名称包含 “-s”

    runtime-link= shared  生成的库文件名称不包含 “-s”

  • 相关阅读:
    WinForm控件常用设置(转)
    EF Core性能优化(一)
    如何更改已经释放的(released)传输请求(TR)的描述
    在新窗口调用Tcode[ABAP4_CALL_TRANSACTION]
    [代码]如何取得表/结构的列名字(cl_abap_structdescr)
    [代码]创建.ZIP压缩文件[CL_ABAP_ZIP]
    如何在表维护视图(maintenance view)上添加自定义按钮(SM30)
    [代码]基于动态内表的ALV
    物料单位转换函数[MD_CONVERT_MATERIAL_UNIT]
    拆分全路径名得到路径+文件名[STPU1_EXTRACT_FILENAME]
  • 原文地址:https://www.cnblogs.com/lidabo/p/3782381.html
Copyright © 2011-2022 走看看