http://www.cnblogs.com/kex1n/archive/2010/03/24/2286507.html
1. 首先在http://sourceforge.net/projects/boost/files/boost/1.42.0/ 下载boost库的最新版本boost_1_42。注意要把boost库放在一个至少有6个g空间的硬盘编译。
2. 下载后使用命令行进入boost库的根目录(我的为:E:/boost_1_42_0)。
3. 在命令行窗口运行boost库的根目录的批处理文件:bootstrap.bat生成bjam工具。 (直接在解压目录下双击bootstrap.bat即可)
4. 运行命令:bjam -sBOOST_ROOT=. -sTOOLS=msvc "--build-type=complete"
(上述命令需要在boost解压文件的含有bjam的目录下运行,比如:
进入cdm后:
1、d: (我解压在D盘)
2、cd softwares/boost_1_42_0/boost_1_42_0/
3、bjam -sBOOST_ROOT=. -sTOOLS=msvc "--build-type=complete"
)
注意这是完全编译boost库,包括单线程、多线程、unicode和非unicode版本。因为我觉得以后的需求是不确定的,干脆一次性编译好了。还有上面的命令行参数稍微说明一下:
-sBOOST_ROOT=.表明boost库的根目录在当前目录。-sTOOLS=msvc表示使用VC 编译器进行编译,如果你机子上装有多个版本的VC,那么会选择最高版本的编译器进行编译(如装有VC6.0、VC 8.0,那么肯定是选择VC 8.0的编译器进行编译)。--build-type=complete表明是完全编译,包括各种版本。
编译完成后就是在VC或者VS中的设置问题了。
我的路径是:d:/softwares/boost 1_42_0/boost 1_42_0/*
其中刚才编译的库文件在d:/softwares/boost 1_42_0/boost 1_42_0/stage/lib中。
进行如下设置:
1.include directory 中包含根目录d:/softwares/boost 1_42_0/boost 1_42_0/。
2.library include 中包含d:/softwares/boost 1_42_0/boost 1_42_0/stage/lib。
3.source include 中包含d:/softwares/boost 1_42_0/boost 1_42_0/boost。
OK,boost可以用了。。。。
----------------------------------------------------------------------------------------------------------------------------------------------------------
在Win32系统上编译Boost,我们以winxp为例:
boost中包含一个类似于make/nmake的工具:bjam,这是boost所推荐的编译方式,
我们就用bjam来编译boost,而bjam的源码也包含在boost的源码包中。
1. 先编译bjam
a) 将boost源码包解包,我们设BOOST_ROOT代表解包后boost的根目录。
...
D:\>cd d:\svn\boost-trunk\
D:\svn\boost-trunk\>
b) 到达bjam的源码目录: $(BOOST_ROOT)\tools\jam\src\
...
D:\svn\boost-trunk>cd tools\jam\src
D:\svn\boost-trunk\tools\jam\src>
c) 然后通过执行其中的build.bat来编译bjam, 这个脚本在执行时可以带一个参数,
用来指定编译bjam的编译器, 如果不带任何参数会自动检查当前系统中已安装的编译
器。当前boost在windows平台所支持的编译工具选项有:
borland:
como:
gcc:
gcc-nocygwin:
intel-win32:
metrowerks:
mingw:
msvc: 用VC6.0进行编译
vc7:
vc8:
vc9:
我们让build.bat自己检查,由于我机器上同时安装了vc6.0与vc7.0,build.bat在
自动检查时会从最新的版进行尝试,所以它会用vc7.0编译bjam:
D:\svn\boost-trunk\tools\jam\src>build.bat
"Call_If_Exists"
Setting environment for using Microsoft Visual Studio .NET 2003 tools.
(If you have another version of Visual Studio or Visual C++ installed and wish
to use its tools from the command line, run vcvars32.bat for that version.)
###
### Using 'vc7' toolset.
###
D:\svn\boost-trunk\tools\jam\src>rd /S /Q bootstrap
...
...
...
updated 1 target...
D:\svn\boost-trunk\tools\jam\src>
d) 得到编译好的bjam,编译完成后就会在当前目录下生在一个保存编译结果的目录: bin.平台类型
我的当前的系统是x86上的winxp(nt),所以这个目录为:bin.ntx86,编译好的bjam就保存在这个
目录下:bjam.exe
2. 先用bjam编译boost中的一个库试试,我们就试试编译test库吧。
a) 通过命令行,到达test的库代码目录:
...
D:\>cd svn\boost-trunk\libs\test
D:\svn\boost-trunk\libs\test>
b) 在这个目录下有一个文件:Jamfile.v2,bjam.exe通过这个文件来了解如何编译test,它类似与
make/nmake的Makefile文件,我们在这个目录直接调用bjam.exe,就可以编译test:
D:\svn\boost-trunk\libs\test>..\..\tools\jam\src\bin.ntx86\bjam.exe
warning: Graph library does not contain optional GraphML reader.
note: to enable GraphML support, set EXPAT_INCLUDE and EXPAT_LIBPATH to the
note: directories containing the Expat headers and libraries, respectively.
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
...
...
**passed** ..\..\bin.v2\libs\test\example\unit_t...
test
...failed updating 2 targets...
...skipped 2 targets...
...updated 434 targets...
c) 默认会编译debug版,且会编译和调用所有单元测试,编译出来的二进制会保存在:
$(BOOST_ROOT)\bin.v2:
D:\svn\boost-trunk>cd bin.v2
D:\svn\boost-trunk\bin.v2>tree
文件夹 PATH 列表
卷序列号码为 000007BC 6057:AC36
D:.
└─libs
├─test
│ ├─build
│ │ └─msvc-7.1
│ │ └─debug
│ │ └─asynch-exceptions-on
│ │ ├─link-static
│ │ │ └─threading-multi
│ │ └─threading-multi
│ ├─example
│ │ ├─const_string_test.test
│ │ │ └─msvc-7.1
│ │ │ └─debug
│ │ │ └─threading-multi
│ │ ├─est_example1.test
│ │ │ └─msvc-7.1
│ │ │ └─debug
│ │ │ └─threading-multi
│ │ ├─est_example2.test
│ │ │ └─msvc-7.1
│ │ │ └─debug
│ │ │ └─threading-multi
│ │ ├─exec_mon_example.test
│ │ │ └─msvc-7.1
...........
3. 编译整个boost:
a) 在boost的根目录下有一个文件:Jamroot,我们在boost根目录下直接执行bjam.exe,就可以
能过这个文件编译根个boost库。
D:\svn\boost-trunk>tools\jam\src\bin.ntx86\bjam.exe
warning: Graph library does not contain optional GraphML reader.
note: to enable GraphML support, set EXPAT_INCLUDE and EXPAT_LIBPATH to the
note: directories containing the Expat headers and libraries, respectively.
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
.......
b) Jamroot文件中有很多可用的编译选项,可以用文件编辑器打开这个文件,来了解更从的编译细节。
例如,可以通过参数来有选择的编译(或不编译)boost的中指定库,如测试库:
D:\svn\boost-trunk>tools\jam\src\bin.ntx86\bjam.exe --with-test stage