这系列文章将逐一介绍Boost库的具体内容。首先我们从Boost在Windows下编译开始讲解。
对于大部分Boost应用来说,它是不用编译的,直接包含头文件就可使用,如:
any
array
asio
conversion
crc
bind/mem_fn
enable_if
function
lambda
mpl
smart_pt
只有少部分需要编译成库文件,需要编译的库如下:
date_time
filesystem
function_types
graph
iostreams
math
mpi
program_options
python
regex
serialization
signals
system
test
thread
wave
要完全编译boost库需要先准备一些第三方库:
1. Regex所需Unicode支持类库 --
ICU
编译ICU较为简单,解开ICU包之后,在其目录下可以找到一个叫"allinone"的目录,用Visual studio或者visual studio express打开里面的allinone.sln,选择release,即可以编译完成,编译之后,将include目录和release目录下的库文件拷贝出来,分别放在C:\icu\include和C:\icu\lib.
2. Graph所需的Xml处理类库 --
Expat, 将该自解压文件解压到C:\expat即可。
3.Boost.MPI所需MPI类库 -- Boost的官方站点说需要MPICH或OpenMPI之类的支持,事实上在Windows下总是会提示需要MPIC++,事实上你需要的是
Microsoft Cluster Pack SDK,下载并默认安装在c:\Program Files\Microsoft Compute Cluster Pack下。
这里我遇到两个问题,一并说一下:
如果下载的是Microsoft HPC Pack 2008 SDK,或者Microsoft Compute ClusterPack不是装到默认的路径下,那bjam就会抓瞎,找不到mpic++的路径,这时候可以修改一下mpi.jam(在tools\build\v2\tools):
local cluster_pack_path_native = "你的路径" ;
现在完全编译Boost所需要的类库都准备好了。
下载Boost并解压到C:\boost.src,进入Visual studio prompt,然后运行boost.src目录下的bootstrap.bat,这个脚本会帮你生成编译所需的bjam.exe文件。
如果你机器上同时有多个不同版本的VC++存在,先修改project-config.jam,将
"using msvc ;"改为诸如" using msvc : 9.0 ;"
要支持mpi,你可以建立一个user-config.jam文件,然后添加一行“using mpi ;”即可
接下来的工作,我写了个小脚本boost.bat
@echo Making all Boost library -- By Ray Linn
set EXPAT_INCLUDE=C:\USR\INCLUDE
set EXPAT_LIBPATH=C:\USR\
set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft Compute Cluster Pack\include;C:\Program Files\Microsoft Compute Cluster Pack\Include\amd64;
set LIBPATH=%LIBPATH%;C:\Program Files\Microsoft Compute Cluster Pack\Lib\amd64;
echo adding -a to force rebuild
:debug
bjam -s HAVE_ICU=1 -s ICU_PATH=C:\usr threading=multi link=static runtime-link=shared variant=debug -s BZIP2_SOURCE="C:\win32_utils\bzip2-1.0.5" -s ZLIB_SOURCE="C:\win32_utils\zlib-1.2.5" --user-config="./user-config.jam" --prefix="C:\boost" install
:release
bjam -s HAVE_ICU=1 -s ICU_PATH=C:\usr threading=multi link=static runtime-link=shared variant=release -s BZIP2_SOURCE="C:\win32_utils\bzip2-1.0.5" -s ZLIB_SOURCE="C:\win32_utils\zlib-1.2.5" --user-config="./user-config.jam" --prefix="C:\boost" install
编译后会得到debug和release两个版本的boost,至此Boost编译完成。现在我们开始配置visual studio以方便以后使用Boost类库。
先设置一个环境变量
set Boost=C:\boost
接着打开Visual studio的菜单 tools-->Options...->projects and solutions-->VC++ directories 如图添加Boost类库的头文件和库文件的路径。
下面这一小段代码用于测试设置是否正确:
#include "stdafx.h"
#include <iostream>
#include <iterator>
#include <algorithm>
#include <string>
#include <boost/regex.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
std::string line;
static const boost::regex pat("^Subject:(Re:|Aw:)*(.*)");
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if(boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}
如无差错,这段代码应该可以正确编译并链接。这时候可以删除boost.src。
- 大小: 50.7 KB
分享到:
相关推荐
在Linux环境下,安装和编译Boost库是开发C++项目时的重要步骤,尤其是当你需要利用Boost提供的高级特性,如多线程支持、日期时间处理、正则表达式、智能指针等时。以下将详细介绍如何在Linux平台上编译和安装Boost...
1. **设置环境**: 在编译Boost之前,确保你的系统上已经安装了C++编译器,如GCC或Clang。你也需要一个构建系统,比如Bjam或现代的B2(Boost.Build的一部分)。 2. **配置Boost**: 进入`boost_1_78_0`目录,你可以...
在本案例中,我们关注的是Boost库的1.68版本,该版本已在Windows环境下使用Visual Studio 2017进行编译,并生成了用于动态链接(dll)和静态链接(lib)的库文件。 首先,我们要理解动态库(dll)和静态库(lib)的...
在Windows 10环境下编译Boost静态库,通常需要以下步骤: 1. 下载Boost源码。 2. 设置编译环境,确保Visual Studio 2019和v142平台工具集已安装。 3. 使用bjam或bootstrap.bat脚本来配置和编译Boost,指定目标为...
1. **下载与解压**:首先从Boost官方仓库(https://www.boost.org/)下载1.68版本的源代码压缩包,然后将其解压到一个合适的目录。 2. **配置编译器**:在Linux环境下,通常使用GCC编译器。这里提到的是GCC 5.3,这...
通常,Boost库需要使用Boost.Build或Bjam工具来配置和编译,这个过程可能涉及到选择适当的编译器(如Visual Studio)、设置编译选项以及处理依赖关系。由于这个压缩包已经包含了编译结果,因此用户可以直接跳过这些...
在Windows和Solaris上安装和编译Boost涉及的主要知识点包括: - Boost库的性质和用途 - C++编译环境的搭建,如Visual Studio和GCC - Boost.Build系统(bjam/b2) - 平台特定的编译和链接选项 - 环境变量的设置,如...
在Visual Studio 2015(VS2015)环境下编译Boost1.71,主要是为了确保该版本的库与该IDE的兼容性,同时也能利用VS2015的特性,如C++11和C++14标准的支持。以下是详细步骤和注意事项: 1. **准备工作**: - 下载...
Boost.Nowide库解决了在Windows环境下使用UTF-8字符串进行系统调用的难题。 Boost.Nowide库的核心目标是使开发者能够更方便地在Windows上编写跨平台代码,而无需关注底层的编码细节。它提供了一层封装,使得开发者...
4. **运行 B2 或 BJAM**:在 Boost 源码目录下,打开命令行窗口,运行 `b2` 或 `bjam` 命令,这会启动 Boost.Build 系统进行编译。你可以通过添加参数来指定编译选项,例如编译哪些库、编译模式(调试或发布)、编译...
Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. 查看bootstrap.log日志文件,结果是: Unknown toolset: vcunk 然后我打开bootstrap.bat查看(notepad++之类的工具), 我...
基于官网的boost.asio的HTTPS/SSL例子,包括server和client端,完整的windows VS编译环境,包含了完整的boost库和openssl库,编译配置测试说明文档,测试用的server.crt和server.key证书文件。如需linux版本,和自己...
在“boost安装下载-boost.rar”这个压缩包中,我们可以看到一个名为“bbb”的文件。通常,这可能是一个包含完整的Boost库源代码或者预编译库的文件。为了利用Boost库,你需要按照以下步骤进行操作: 1. **下载与...
这个压缩包包含了必要的编译结果以及使用指南,使得开发者能够更加方便地在VS2017环境下使用Boost库。 首先,让我们详细了解Boost库。Boost库由一系列独立的模块组成,这些模块涵盖了各种编程需求,如智能指针、...
### Boost编译资料命令解析 Boost是一个开源的C++库集合,它提供了许多有用的模板类和函数,可以显著提高开发效率。在实际项目中,为了能够有效地利用Boost库的功能,通常需要对其进行编译以适应不同的操作系统、...
标题“VS2017下Boost的编译”指明了文章的主题是介绍如何在Visual Studio 2017环境下编译Boost库。Boost是一个跨平台的C++库,广泛应用于C++社区,提供许多组件,包括字符串处理、容器、数学运算、多线程处理等,极...
在编译libLAS库之前,需要下载和编译四个依赖库:Boost、GDAL、TIFF和GeoTIFF。其中,Boost库已经配置在PCL库中,故不需要单独配置。 GDAL库是libLAS库的依赖库之一,下载地址为...
1. **多线程支持**:Boost.Thread库提供了线程管理和同步原语,如互斥量、条件变量和future/promise等,使得在ARM平台上进行多核优化变得更加便捷。 2. **智能指针**:Boost智能指针(例如shared_ptr、unique_ptr)...
例如,Boost.Asio提供异步I/O,Boost.Thread支持多线程编程,Boost.Bind和Boost.Lambda简化函数对象的创建,而Boost.Serialization则提供数据序列化和反序列化的功能。 总之,Boost 1.77.0 Windows平台开发包是一个...
1. 泛型编程:例如`boost::mpl`(Meta-Programming Library)和`boost::proto`(Proto Expression Template Library),它们提供了元编程工具,允许在编译时进行复杂的计算和类型操作。 2. 模板元编程:`boost::type_...