以前曾多次尝试编译boost,均未果。虽在网上看到过很多怎么编译boost的指导,但大多都是抄来抄去,而且和现行版本已经相去甚远。可以说boost的编译曾一次又一次的打击了我幼小的心灵。
下面的编译方法我是亲身实践得来的:
平台:VS2005 sp1
Python:2.5.4 (可选,若不安装python,则python相关的库将不会被编译)
下载解压后在boost-1.38.0目录下建立build.bat文件:
cd tools\jam\src\call build.bat
cd ..\..\..\tools\jam\src\bin.ntx86\bjam.exe --toolset=msvc-8.0 --prefix=.\stage
保存后运行,等若干长的时间。编译完成后,将会生成bin.v2目录和stage目录。bin.v2是编译生成文件的中间目录,stage是最终生成的dll和lib相应的目录,如果你硬盘不够大的话建议删除bin.v2,不过下次你再编译的时候还得等上和第一次一样长的时间。
2010-4-10
boost中文文档可以在 http://code.google.com/p/boost-doc-zh/downloads/list 下载得到,感谢该翻译计划所有的参与人员和组织!
2010-4-20
2010-4-21
对于大部分Boost应用来说,它是不用编译的,直接包含头文件就可使用。只有少部分需要编译成库文件,需要编译的库如下:date_time、filesystem、function_types、graph、iostreams、math、mpi、program_options、python、regex、serialization、signals、system、test、thread、wave。如果代码中用不到这部分需要编译的Boost库,完全可以不用花时间编译,直接包含头文件即可。
bjam编译命令如下:
cd tools\jam\src\
call build.bat
cd ..\..\..\
一般常在Windows下开发,常用的是MD方式静态链接方式,则编译命令为:
tools\jam\src\bin.ntx86\bjam.exe --toolset=msvc-10.0 threading=multi runtime-link=shared link=static
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 显示需要编译的库名称
更详细的编译选项请参考:http://www.cppprog.com/2009/0112/48.html
评论