`

【Boost】 1. 在Windows下编译Boost

阅读更多
这系列文章将逐一介绍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平台下编译安装使用的boost1.83.0版本压缩包

    在Linux环境下,安装和编译Boost库是开发C++项目时的重要步骤,尤其是当你需要利用Boost提供的高级特性,如多线程支持、日期时间处理、正则表达式、智能指针等时。以下将详细介绍如何在Linux平台上编译和安装Boost...

    boost_1_78_0编译及使用

    1. **设置环境**: 在编译Boost之前,确保你的系统上已经安装了C++编译器,如GCC或Clang。你也需要一个构建系统,比如Bjam或现代的B2(Boost.Build的一部分)。 2. **配置Boost**: 进入`boost_1_78_0`目录,你可以...

    boost库1.68版本windows下编译的dll和lib库

    在本案例中,我们关注的是Boost库的1.68版本,该版本已在Windows环境下使用Visual Studio 2017进行编译,并生成了用于动态链接(dll)和静态链接(lib)的库文件。 首先,我们要理解动态库(dll)和静态库(lib)的...

    boost_1_73_0编译好的静态库文件版本

    在Windows 10环境下编译Boost静态库,通常需要以下步骤: 1. 下载Boost源码。 2. 设置编译环境,确保Visual Studio 2019和v142平台工具集已安装。 3. 使用bjam或bootstrap.bat脚本来配置和编译Boost,指定目标为...

    boost库1.68版本Linux下编译的动态库和静态库

    1. **下载与解压**:首先从Boost官方仓库(https://www.boost.org/)下载1.68版本的源代码压缩包,然后将其解压到一个合适的目录。 2. **配置编译器**:在Linux环境下,通常使用GCC编译器。这里提到的是GCC 5.3,这...

    windows下编译好的boost库

    通常,Boost库需要使用Boost.Build或Bjam工具来配置和编译,这个过程可能涉及到选择适当的编译器(如Visual Studio)、设置编译选项以及处理依赖关系。由于这个压缩包已经包含了编译结果,因此用户可以直接跳过这些...

    Windows和Solaris上Boost安装和编译

    在Windows和Solaris上安装和编译Boost涉及的主要知识点包括: - Boost库的性质和用途 - C++编译环境的搭建,如Visual Studio和GCC - Boost.Build系统(bjam/b2) - 平台特定的编译和链接选项 - 环境变量的设置,如...

    boost1.71在vs2015下全编译

    在Visual Studio 2015(VS2015)环境下编译Boost1.71,主要是为了确保该版本的库与该IDE的兼容性,同时也能利用VS2015的特性,如C++11和C++14标准的支持。以下是详细步骤和注意事项: 1. **准备工作**: - 下载...

    Boost.Nowide-Windows上带有UTF-8API的标准库函数.zip

    Boost.Nowide库解决了在Windows环境下使用UTF-8字符串进行系统调用的难题。 Boost.Nowide库的核心目标是使开发者能够更方便地在Windows上编写跨平台代码,而无需关注底层的编码细节。它提供了一层封装,使得开发者...

    bjam.exe boost库编译使用的工具

    4. **运行 B2 或 BJAM**:在 Boost 源码目录下,打开命令行窗口,运行 `b2` 或 `bjam` 命令,这会启动 Boost.Build 系统进行编译。你可以通过添加参数来指定编译选项,例如编译哪些库、编译模式(调试或发布)、编译...

    win10下安装boost库遇到问题记录

    Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. 查看bootstrap.log日志文件,结果是: Unknown toolset: vcunk 然后我打开bootstrap.bat查看(notepad++之类的工具), 我...

    基于boost.asio库的windows C++ https/ssl server client 含完整boost和openssl库 编译环境 测试证书

    基于官网的boost.asio的HTTPS/SSL例子,包括server和client端,完整的windows VS编译环境,包含了完整的boost库和openssl库,编译配置测试说明文档,测试用的server.crt和server.key证书文件。如需linux版本,和自己...

    boost安装下载-boost.rar

    在“boost安装下载-boost.rar”这个压缩包中,我们可以看到一个名为“bbb”的文件。通常,这可能是一个包含完整的Boost库源代码或者预编译库的文件。为了利用Boost库,你需要按照以下步骤进行操作: 1. **下载与...

    boost_1_78_0-编译完成的vs-2017-32and64以及使用说明

    这个压缩包包含了必要的编译结果以及使用指南,使得开发者能够更加方便地在VS2017环境下使用Boost库。 首先,让我们详细了解Boost库。Boost库由一系列独立的模块组成,这些模块涵盖了各种编程需求,如智能指针、...

    boost编译资料命令

    ### Boost编译资料命令解析 Boost是一个开源的C++库集合,它提供了许多有用的模板类和函数,可以显著提高开发效率。在实际项目中,为了能够有效地利用Boost库的功能,通常需要对其进行编译以适应不同的操作系统、...

    VS2017下Boost的编译

    标题“VS2017下Boost的编译”指明了文章的主题是介绍如何在Visual Studio 2017环境下编译Boost库。Boost是一个跨平台的C++库,广泛应用于C++社区,提供许多组件,包括字符串处理、容器、数学运算、多线程处理等,极...

    libLAS1.8.0 编译和配置(VS2013+Win7 64).docx

    在编译libLAS库之前,需要下载和编译四个依赖库:Boost、GDAL、TIFF和GeoTIFF。其中,Boost库已经配置在PCL库中,故不需要单独配置。 GDAL库是libLAS库的依赖库之一,下载地址为...

    arm架构下的boost库文件

    1. **多线程支持**:Boost.Thread库提供了线程管理和同步原语,如互斥量、条件变量和future/promise等,使得在ARM平台上进行多核优化变得更加便捷。 2. **智能指针**:Boost智能指针(例如shared_ptr、unique_ptr)...

    boost 1.77.0 Windows平台开发包,静态库版本

    例如,Boost.Asio提供异步I/O,Boost.Thread支持多线程编程,Boost.Bind和Boost.Lambda简化函数对象的创建,而Boost.Serialization则提供数据序列化和反序列化的功能。 总之,Boost 1.77.0 Windows平台开发包是一个...

    boost 1.31.0 版本

    1. 泛型编程:例如`boost::mpl`(Meta-Programming Library)和`boost::proto`(Proto Expression Template Library),它们提供了元编程工具,允许在编译时进行复杂的计算和类型操作。 2. 模板元编程:`boost::type_...

Global site tag (gtag.js) - Google Analytics