zoukankan      html  css  js  c++  java
  • VS2010编译boost

    1.下载安装包boost 1_46_0
    http://www.boost.org/
    选择下载 windows 或 unix 版本

    2.解压缩到D:oost 目录下

    3.编译bjam

    (1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt(命令提示)”
    (2)cd到D:oostoost_1_46_0下执行bootstrap.bat,然后,会在D:oostoost_1_46_0下生成bjam.exe

    4.设定编译环境(如果想去掉编译警告需要修改)
    修改user-config.jam (D:oostoost_1_46_0 oolsuildv2user-config.jam) 的MSVC configuration
    # MSVC configuration

    # Configure msvc (default version, searched for in standard locations and PATH).
    # using msvc ;

    using msvc : 10.0 : : <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE <compileflags>/D_SCL_SECURE_NO_DEPRECATE <compileflags>/D_SECURE_SCL=0 ;

    5.將目录cdD:oostoost_1_46_0下执行
    (1) 编译boost库
    bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="D:oostoost_1_46_0invc10" (这一步需要等待很长时间,大概一个小时左右……)

    下面详细解释一下每个参数的含义:
    stage/install:stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。

    toolset:指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。

    without/with:选择不编译/编译哪些库。

    stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2010对应的是D:oostoost_1_46_0invc10,否则都生成到一个目录下面,难以管理。

    build-dir:编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(D:oostoost_1_46_0)下,目录名为bin.v2(删掉),等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。

    link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

    runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static。

    threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

    debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

    运行完后(弹出输入提示符)
    6.设定vs2010环境。(注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 )

    修改环境变量:$(BOOST): D:oostoost_1_46_0
    Tools -> Options -> Projects and Solutions -> VC++ Directories
    在Library files加上$(BOOST)invc10lib

    在Include files加上$(BOOST)

    使用举例:

    #include<boost hread.hpp>

    此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:

    #define BOOST_ALL_DYN_LINK

    同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:

    #define BOOST_ALL_NO_LIB

    然后使用以下方法链接:

    #pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或

    #pragma comment(lib, "boost_thread-vc100-mt.lib")

    另外还有一个比较有用的宏:

    #define BOOST_LIB_DIAGNOSTIC

    它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。

    关于boost的auto-link机制,详细可以看看boostconfigauto_link.hpp里的代码。

  • 相关阅读:
    CriminalIntent项目开发笔记(二)
    CriminalIntent项目开发笔记(一)----动态添加Fragment
    android应用中去掉标题栏的方法
    15个IT程序员必须思考的问题
    Android Studio快捷键
    Android 学习笔记
    win7系统安装方法
    jquery随学随记
    接口功能测试策略--转载
    测试随笔
  • 原文地址:https://www.cnblogs.com/desheng-Win/p/3225638.html
Copyright © 2011-2022 走看看