boost window下安装

时间:2024-03-22 22:46:16

boost  window下安装

window:

1、boost根目录运行 bootstrap.bat; 生成 bjam.exe

2、打开vs命令行,切换到boost目录,运行命令:bjam --toolset=msvc-10.0|msvc-9.0 --build_dir=D:/temp --stagedir=D:/boostsdkforwindows variant=release threading=multi link=static runtime-link=static

 

boost window下安装

 

3、 命令执行完后,boost目录和boostsdkforwindows目录就是头文件和库文件,可以拷贝的所需的任意目录。

 

bjam --toolset=msvc-10.0 --build_dir=E:\temp --prefix=E:\boost1.55i --stagedir=E:\boostsdkforwindows --build-type=complete --with-atomic --with-chrono --with-context --with-coroutine --with-date_time --with-exception --with-filesystem --with-iostreams --with-locale --with-regex --with-system --with-thread --with-timer stage threading=multi


4、设定vs2010环境。(注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 )

修改环境变量:$(BOOST):  D:\boost\boost_1_46_0
Tools -> Options -> Projects and Solutions -> VC++ Directories 
在Library files加上$(BOOST)\bin\vc10\lib

在Include files加上$(BOOST)

使用举例:

#include<boost\thread.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")

这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:

#define BOOST_LIB_DIAGNOSTIC

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

ABI tag: encodes details that affect the library's interoperability with other compiled code.  For each such feature, a single letter is added to the tag:

Key Use this library when: Boost.Build option
s linking statically to the C++ standard library and compiler runtime support libraries. runtime-link=static
g using debug versions of the standard and runtime support libraries. runtime-debugging=on
y using a special debug build of Python. python-debugging=on
d building a debug version of your code. variant=debug
p using the STLPort standard library rather than the default one supplied with your compiler. stdlib=stlport