【fishing-pan:https://blog.csdn.net/u013921430转载请注明出处】
前言
这是很早之前的一个工作了,当时需要修改和重新编译其他实验室的软件的源码,所以需要自己编译Boost。因此对于如何编译Boost一点简单了解,这里分享给大家。(我自己没有使用它做开发哦!如果开发方面的求助,我就爱莫能助了!)
软件工具:VS2013+boost 1.59.0+Win7(X64)
1. 定义
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。(来自百度百科“Boost库”的内容)
2. 编译工具
在这里,我是采用VS2013进行编译的。因为我需要的是X64位的环境下编译程序,所以需要X64位的Boost库,我们使用X64兼容工具命令提示编译。如果编译32位的库,则采用X86本机工具命令提示编译。
3. 编译过程
我把解压后的文件夹放在了F盘下,我所下载的库版本为1_59_0;首先我们进入Boost的目录,执行bootstrap.bat。
这一步执行完成后,会在boost根目录生成 b2.exe 、bjam.exe 、project-config.jam 、bootstrap.log四个文件。其中,b2.exe 、bjam.exe 这两个exe作用是一样的,bjam.exe 是老版本,b2是bjam的升级版本。接下来,就是输入编译指令。我的编译指令如下;
bjam installstage --toolset=msvc-12.0-agedir="C:\Boost\boost_vc_120"link=shared runtime-link=shared threading=multi debug release address-model=64
(1) bjam是指采用的编译程序是bjam,也可以是b2。Install stage是指编译之后的内容即产生(install)头文件,也产生(stage)库文件。只选择stage就只生成库(静态库及动态库),选择install就还会生成包含目录(include)。
(2) toolset是用来指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008),msvc-11.0(VS2012)等。这里的msvc-12.0是VS2013。
(3) agedir="C:\Boost\boost_vc_120"是指定生成文件的存放路径。
(4) link=shared;生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。这里决定了生成的库的是静态的还是动态的库。
(5) runtime-link=shared;动态/静态链接C/C++运行时库。这里可以认为是生成的库需要怎样去链接,是动态的链接还是静态的链接。详细的举例如下表;
序号 | link | runtime-link | 生成库 |
1 | static | static | libboost_date_time-vc120-mt-sgd-1_59.lib libboost_date_time-vc120-mt-s-1_59.lib |
2 | static | shared | libboost_date_time-vc120-mt-gd-1_59.lib libboost_date_time-vc120-mt-1_59.lib |
3 | shared | shared | boost_date_time-vc120-mt-gd-1_59.dll boost_date_time-vc120-mt-gd-1_59.lib boost_date_time-vc120-mt-1_59.dll boost_date_time-vc120-mt-1_59.lib |
4 | shared | static | 报错,无法编译 |
可以看到link时是否使用“shared”决定了是否产生动态库,而runtime-link决定boost链接系统运行时链接库的方式,静态链接或者动态链接。与之对应的就是如下图中显示的,是选择Multithreaded 还是选择Multithreaded DLL 方式运行库。
(6) threading,单/多线程编译。如果需要编写多线程程序,要指定multi方式;如果需要编写单线程程序,则使用single方式。这里一般选择多线程。
(7) debug release,指定生成的库的debug\release版本。其中
libboost_date_time-vc120-mt-s gd-1_59.lib
libboost_date_time-vc120-mt-s-1_59.lib
上面的有gd为debug版本,下面没有gd的为release版本。
(8) address-model=64,是生成X64位的库需要的指令。
4.编译结果
编译完成后,除了指定路径会生成Boost库和头文件外,在C盘根目录中也会直接生成一个Boost的文件夹,其中也会包含库和头文件。其实头文件不需要单独编译,因为在解压下载下来的包之后,就已经有了头文件,为了节约时,直接复制使用即可;
5.后续处理
后面的工作只需要把库的路径添加到程序的“附加库目录”,把所需的库的名字加入“附加依赖项”即可。
已完。。