boost库在windows的编译及配置(VS2010)

C++有一个强大的Boost,里面有好多功能是C++标准库所不支持的。看着Boost中那些强大的功能模板怎能不动心呢!下面我们就来看看如何在VS2010下使用Boost库。

系统:windows7

开发环境:Visual Studio 10

boost版本:boost_1_55_0

(1)boost下载

首先从boost官方主页BOOST官方下载网址下载最新版boost安装包,下载完毕后将其解压在[D:\ProgramFiles\MicrosoftVisualStudio10.0\boost_1_55_0](此处是我的解压目录)。

(2)运行bootstrap.bat生成bjam.exe可执行文件

用VS2010的命令行来实现,后期也是使用VS2010的命令行来实现boost库的编译。步骤为:

点击开始—>所有程序--> Microsoft Visual Studio 2010-->VisualStudio tools--> Visual Studio 2010 命令提示。

打开VisualStudio 2010 命令提示 后进入boost的解压目录(D:\ProgramFiles\MicrosoftVisualStudio10.0\boost_1_55_0):

运行booststrap.bat应用程序: 输入 bootstrap.bat  [回车 ] 即可运行。

运行完毕后就可以在bootstrap.bat当期目录看到生成的b2.exe及bjam.exe。运行完毕后有相应的提示,可根据提示操作。

(3)修改user-config.jam文件

user-config.jam文件的位置在boost解压目录boost_1_55_0\tools\build\v2目录下[我的解压目录位置为D:\ProgramFiles\MicrosoftVisualStudio10.0\boost_1_55_0\tools\build\v2目录下。]

打开user-config.jam文件[可用记事本],添加以下内容[其它的内容在默认下都是被屏蔽了的 :


using msvc : 10.0 : : <compileflags>/wd4819  <compileflags>/D_CRT_SECURE_NO_DEPRECATE  <compileflags>/D_SCL_SECURE_NO_DEPRECATE  <compileflags>/D_SECURE_SCL=0 ;

<compileflags>间用空格隔开,以上的‘:‘及‘::’的格式都是正确的。如果开发环境为VS2008则msvc项应为msvc:9.0。保存后关闭文件。

(4)用bjam.exe编译生成库文件

在Visual Studio 2010 命令提示 命令窗口中执行以下命令[可先命令bjam–show-libraries查看有哪些库是必须编译才能使用的 ]:


bjam stage --toolset=msvc-10.0 --without-python  --without-mpi --without-wave --without-graph --without-math  --without-serialization --stagedir="D:\boost_1_55_0\boost_1_55_0\bin\vc10" link=static runtime-link=shared threading=multi debug release

 stagedir="D:\boost_1_55_0\boost_1_55_0\bin\vc10"指定编译后的库文件存放目录

如果开发环境是vs2008则对应的--toolset参数值为msvc-9.0。运行此命令后就可以看见在指定目录F:\boost_1_54_0\boost_1_54_0下生成bin,bin.v2文件,然后随着编译,这两个文件里面的东西也越来越多。

如果是全部编译,将编译的库放在指定的目录,则可以这样子书写bjam命令:

bjam stage --toolset=msvc-10.0 --build-type=complete --stagedir="D:\boost_1_55_0\boost_1_55_0\bin\vc10" link=static runtime-link=shared threading=multi debug release

在XP系统下,用VS2008编译完全后还有环境配置的提示。

bjam命令和各参数间及参数与参数间都以空格隔开。debug  release表示调试版和发布版皆被生成。

bjam使用的形式为:

bjam --参数1-模式1 --参数2-模式2参数3=模式3 …  debug
release

参数前要加”--”,参数对应项如“—without-serialization” –without与serialization之间要加”-”,其它的参数需要设置成对应的模式用”=”。

bjam.exe部分参数解释如下:


stage/install:stage指定boost C++库安装在名为stage的子目录下,可又--stagedir指定安装路径;install在系统范围内安装(windows下安装目录为C:\Boost,而在linux中则是/usr/local),目标目录也可以由--prefix指出。

stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。【未经验证】

--toolset:指定C++的编译器[ VS2008对应--toolset=msvc-9.0,vs2010对应--toolset=msvc-10.0
]

--build-type:创建何种方式的库。缺省情况下,该选项设为minimal,即只创建发布版。对于那些想用Visual Studio 或GCC 构建他们项目的调试版的开发者来说,可能是一个问题。因为这些编译器会自动尝试链接调试版的Boost C++ 库,这样就会给出一个错误信息。在这种情况下,应将--build-type 
选项设为complete,以同时生成Boost C++ 库的调试版和发布版,当然,所需时间也会更长一些。

link:创建动态[  link=shared ]还是静态[link=static]的库.

runtime-link:指定C++运行时库是静态[ runtime-link=static ]链接还是动态[ runtime-link=shared ]链接

threading:单[  threading=single ]/多线程[  threading=multi ]编译。

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

在D:\Program Files\Microsoft Visual Studio 10.0\boost_1_55_0根目录下Jamroot文件,是关于bjam的详细使用说明。

其中没有安装的库比较多,如果我今后要用到这些没有安装的这些库,则重新进入VS2010的命令行安装即可.

这个过程执行时间比较长[不安装这么多的库还好,要是都安装的话时间就真的比较长了,感觉我的电脑都不止网上说的一个小时的,所以选择以后会用到什么库再安装的方式来使用bjam.exe 。不过配置较好的台式机花的时间就比较少了 ],命令窗口会出现大量的字符串。这个场景让我想起了大二开始搞的linux字符界面呀,在那个界面之下操作的的场景与此景相似,而且我觉得在命令行下的命令使用格式都差不多的。可以专门查一下bjam的用法。

(5)VS2010 boost库配置

为boost设置一个环境变量BOOST,变量值:D:\boost_1_55_0\boost_1_55_0。然后在VS2010的项目中对应目录进行以下设置。

右键项目-->属性-->VC++目录;

1.将boost库文件目录(即D:\boost_1_55_0\boost_1_55_0\bin\vc10)加入library目录(或者放入D:\Program Files\Microsoft Visual Studio 10.0\VC\lib目录下)。

2.将D:\ProgramFiles\MicrosoftVisualStudio10.0\boost_1_55_0\boost目录(即解压的boost1_55_0包含头文件的目录)放入D:\Program
Files\Microsoft Visual Studio 10.0\VC\include目录下)。

如果是VS2008则配置步骤为:

打开VS2008项目,工具-->选项-->项目和解决方案-->VC++ 目录,然后在右上角(显示以下内容的目录)选择包含文件及库文件。

(6)测试

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

void hello()
{
	for(int i=0;i<30;i++){
		std::cout<<"Hello world, I'm a thread!"<<std::endl;
	}
}

void hello2(){
	for(int i=0;i<30;i++){
		std::cout<<"Hello world2222, I'm a thread!"<<std::endl;
	}
}
int main()
{
	boost::thread thrd(&hello);
	boost::thread thrd2(&hello2);
	thrd.join();
	thrd2.join();
	return 0;
}

时间: 2024-10-13 12:42:11

boost库在windows的编译及配置(VS2010)的相关文章

&lt; python音频库:Windows下pydub安装配置、过程出现的问题及常用API &gt;

< python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分使用了pydub这个音频库,十分快捷方便,但是它完整一套的配置让我还是踩了几个坑.特将其配置过程记录于此,方便大家. Windows10系统 < Pydub in Github > 安装Pydub Anaconda:打开Anaconda prompt,activate切换至工作环境下,键入pip

boost库在windows下的编译和使用

因为跨平台的原因,现在要使用到boost库,boost库非常大,现在处于摸索阶段. 首先来说boost库在window下的安装和使用. 一.下载 首先从boost官方主页http://www.boost.org/下载最新版boost安装包,或者使用Subversion获取最新版本,地址是:http://svn.boost.org/svn/boost/trunk.本人现在一般都用svn,这样可以很方便的进行update和build,而不是每次都下载新的安装包并rebuild. 二.安装 如果是使用

Windows下编译和配置Vtk Web Demo

Paraview作为Ktware的产品提供了一个完整的Web客户端的后端渲染框架.具体文档和资料参考. http://www.paraview.org/ParaView/Doc/Nightly/www/js-doc/index.html 经过调研发现其实Vtk 7.0里面包含了完整相关架构和代码以及示例.只是没有提供任何文档,在发布版本里面也没有任何编译结果和文档. 参考Paraview 5.0的资料对于vtk 7进行编译和测试,发现确实保留了完整的架构. 下面是编译和配置的简单记录,假定本文的

Windows平台编译openssl-0.9.8k库(32位、64位)

最近工作中使用到了openssl的win64位资料,所以进行前期调研,汇总结果如下: [注意]openssl代码所在目录中不要带中文,否则"nmake -f ms\ntdll.mak "可能会提示"宏中非法字符"等错误 一.Openssl WIN7 x64 编译 环境:WIN7 64位,编译器:VS2010 需要下载 Perl(如http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/Acti

C++ boost库无锁队列多线程并行测试与编译方法

阅读了网络中关于Boost库无锁队列的源代码,但却缺少编译方法.经过测试,确定了ubuntu 14.04中编译boost库的方法,特做记录. 无锁(free-lock)是实现高性能多线程并发编程的重要技术. 作为C++11 STL参考实现的boost库,不仅支持11标准,而且做了许多扩展,掌握其使用方法,对于提高代码质量,尤其重要. 以其多线程并行无锁队列为例,结合代码和说明,演示了无锁boost库的使用和编译方法. 代码及说明如下: //source: boost_queue.cpp //目的

将Boost库添加到Visual Studio 2017

在windows 环境中,一般比较推荐的打包软件的方式是,将自己所需要的共享库放在软件自己的文件夹中,并且避免与其它的软件共用.除非是微软的官方组件,比如微软自家的VC Runtime. Boost库在windows 平台的使用,一般也是推荐直接静态链接,而非是使用动态库.并且 Boost 库时如些强大,以致于你使用了之后,不需要手动在 VS 中配置你需要链接的库文件,而是由头文件搞定这一切,除非你用至的Boost库用到了微软自家的库,但是默认这个库又没有配置到项目中. 废话就说到这里,下面给出

详解Boost库智能指针(shared_ptr &amp;&amp; scoped_ptr &amp;&amp; weak_ptr )

我们先来解释一下什么叫智能指针? 智能指针是利用RAII(在对象的构造函数中执行资源的获取(指针的初始化),在析构函数中释放(delete 指针):这种技法把它称之为RAII(Resource Acquisition Is Initialization:资源获取即初始化))来管理资源. 其本质思想是:将堆对象的生存期用栈对象(智能指针)来管理.也就是当new一个堆对象的时候,立刻用智能指针来接管,具体做法是在构造函数中进行初始化(用一个指针指向堆对象),在析构函数调用delete来释放堆对象.由

linux, windows编译安装 boost库 (boost 1.56)

要用到 boost库,基础设施建设...做个记录 1.0  linux : 系统环境 [email protected]:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS" [email protected]-B85M-DS3H:~# uname -a Linux melos1305-

Windows系统下开源编解码库H.264与FFmpeg-2.8.2的编译与配置

一. 前言 FFmpeg是一个基于Linux开发的开源项目,其源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不支持MSVC++编译,需要在Windows下配置一个类似Linux的编译环境进行编译. 编译生成动态链接库dll,这些库将和其他的动态链接库一样在使用上没什么差别.可以使用MSVC++来链接这些库到其他的程序,也就是说,Windows + Visual Studio平台下的软件开发. 如果没有时间了解以下编译的过程,可直接下载以下链接的压缩