您的位置:首页 > 其它

在Windows平台VS2013环境下编译Boost库

2014-12-11 16:19 302 查看
Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。

Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。 

Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。

(以上文字摘自【开源中国】)

本文记录(介绍)Boost库的编译过程。

操作系统为64位版本Windows8.1 ,编译环境为Visual Studio 2013 (msvc12.0)

一、准备

下载boost代码(此文首次编辑时,Boost的最新版本为1.57.0)

需要下载请访问官网http://www.boost.org/

或者SourceForge页面https://sourceforge.net/projects/boost/

我下载的是boost_1_57_0.zip

下载完之后解压(可以按照个人喜好设置解压路径)

请保证目标位置所在磁盘有足够空间,因为编译后产生了大量的中间文件,最后将占用近2G的空间

二、开始编译

1、生成bjam.exe程序

切换到解压目录,找到bootstrap.bat,(双击)运行,不出意外就会生成bjam.exe(和其他文件)

保险起见,我在bootstrap.bat的内容末尾添加了一行暂停语句



也可以在控制台(命令行)窗口(Win+R调出cmd窗口)中执行,把bat文件拖拽到cmd窗口就可以了

2、设置编译参数

我个人偏好自己写一个bat文件(而不是在cmd窗口输入命令),内容如下

(原本所有命令都在一行,为了方便阅读才拆分为多行显示)

@echo build boost library
bjam
--toolset=msvc-12.0
--prefix=D:\Develop\Boost
--build-type=complete
link=shared
variant=release
threading=multi
runtime-link=shared
install
@pause


其中各词语的含义如下

bjam 是主程序(bjam.exe)
--toolset=msvc-12.0 表示编译工具集是MSVC12.0 (即VS2013)

--prefix=D:\Develop\Boost 表示编译后的安装目录

--build-type=complete 表示尝试完整编译(可以选择只编译其中的一些组件或者忽略某些组件)

link=shared 表示动态链接(使用动态链接库)

variant=release 表示以Release模式编译
thread=multi 表示编译为多线程

runtime-link=shared 表示生成动态链接库(dll)

install 表示安装(类似于CMake的install,就是将对应include、lib、bin等文件拷贝到安装目录)

更多的参数及其设置可以参考相关资料(网络上的相关资料很丰富,找到适合的参考一下就行了)

3、编译

执行以上命令(在CMD窗口输入或者编写bat文件双击运行),我设置的是完全编译,耗时约10分钟

在安装目录下有include和lib两个文件夹

在include目录下有几个层次文件夹,我把底层文件夹下的所有文件剪切到include\boost目录下,感觉更“整洁”

注意,必须是\include\boost\双层结构,而不是\include\单层结构,否则无法正常使用

下图是我的boost文件夹下内容布局



然后将lib文件夹下的dll文件剪切出来粘贴到新建的bin目录,余下的lib文件保留

我的lib文件夹如下(左)                                              bin文件夹如下(右)

  

    


三、配置编译环境参数

这一步和其他库的配置方法基本上是一样的,无外乎设置include目录、lib目录和bin目录等,此处不再赘述。

四、使用示例

测试程序的源代码

#include <iostream>
#include <boost/array.hpp>

using namespace std;
using namespace boost;

void test_array()
{
cout << "array test" << endl;
array<int, 10> ia = { 1, 2, 3, 4, 5 };
for (size_t i = 0; i<ia.size(); ++i)
{
cout << ia[i] << " ";
}
cout << endl;
}

int main(void)
{
test_array();
system("pause");
return 0;
}

运行结果



本文原创,博文原始地址

http://blog.csdn.net/fengyhack/article/details/41867193
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: