boost-1.53源代码编译

1、下载源代码。首先得明确,boost大多数库都仅仅有头文件。链接时不需Lib文件;下面库须要单独编译成库:

Boost.Filesystem
Boost.GraphParallel
Boost.IOStreams
Boost.MPI
Boost.ProgramOptions
Boost.Python
Boost.Regex
Boost.Serialization
Boost.Signals
Boost.System
Boost.Thread
Boost.Wave

以下几种是可选的:

Boost.DateTime 
Boost.Graph 
Boost.Math 
Boost.Random
Boost.Test

2、打开VS2012命令行窗体。进入源代码文件夹,首先运行bootstrap.bat

3、用bjam或b2编译。

我採用的命令是:

b2 --toolset=msvc-11.0 --build-type=complete --build-dir="d:\result" stage


关于一些选项的解释:

stage/install:stage表示仅仅生成库(dll和lib),install还会生成包括头文件的include文件夹。

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

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

stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。

build-dir:编译生成的中间文件的路径,编译完毕后可将这个文件夹所有删除。

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版本号,所以两个都编译。

因为我没有指令stagedir,所以默认在源代码文件夹下生成stage文件夹,大致例如以下图:


注意对某一种类型的库而言,有2个dll。2个lib,分别来自编译文件夹中的debug\threading-multi和release\threading-multi。还有其他lib,dll并没有在生成的库中。当中间编译文件夹result如filesystem库中文件例如以下:


上面几个文件夹中的库,有点乱,临时还不太清楚详细差别是什么。有待进一步了解。

最后生成的库可在这里下载:http://download.csdn.net/detail/baiwfg2/7529569

4、最后測试验证

须要在project属性中加入头文件文件夹路径和生成库文件夹,但不须要指定库名,由于有auto-link机制


參考网址:

http://www.cnblogs.com/ComputerG/archive/2011/03/10/1979730.html

http://blog.csdn.net/zengraoli/article/details/8870446

另外。源代码内部的网页帮助文档非常值得一看!

posted @ 2017-08-05 15:17  zhchoutai  阅读(522)  评论(0编辑  收藏  举报