前期准备
下载
进入Boost官网,点击最新版本,进入选择下载页面。如果使用Windows操作系统,下载Boost源码的7z压缩包。
Boost官网:https://www.boost.org
解压
下载Boost源码压缩包之后,将其解压至指定位置。我把Boost源码解压至E:\Download\Boost,而Boost的根目录为E:\Download\Boost\boost_1_68_0。
版本
此Boost版本的默认编译配置仅支持2017及以下的VS版本,而Boost新版本才默认支持2019及以上的VS版本。不同VS版本对应MSVC版本和bootstrap参数如表所示:
VS版本 | 2003 | 2005 | 2008 | 2010 | 2012 | 2013 | 2015 | 2017 | 2019 | 2022 |
---|---|---|---|---|---|---|---|---|---|---|
MSVC版本 | 7.1 | 8.0 | 9.0 | 10.0 | 11.0 | 12.0 | 14.0 | 14.1 | 14.2 | 14.3 |
bootstrap参数 | vc71 | vc8 | vc9 | vc10 | vc11 | vc12 | vc14 | vc141 | vc142 | vc143 |
编译步骤
引导
按Windows键打开开始菜单,寻找Developer Command Prompt for VS 2017或者VS 2017的开发人员命令提示符,其他VS版本的命令工具名称类似,右击弹出右键菜单,选择以管理员身份运行,出现如图界面:
切换至Boost根目录:
cd E:\Download\Boost\boost_1_68_0
根据VS版本,确定bootstrap参数,执行以下命令:
bootstrap.bat vc141
此时生成文件如图所示:
可执行文件b2.exe和bjam.exe都是构建工具,用于构建Boost库。而project-config.jam是配置文件,其内容如下:
import option ;
using msvc : 14.1 ;
option.set keep-going : false ;
编译
执行以下命令编译完整Boost,具体编译时间由PC配置和系统状态决定。
b2.exe install --toolset=msvc-14.1 --prefix="E:\Download\Boost\boost_1_68_0" --build-type=complete
在编译完成之后,于Boost根目录可以看见如图三个文件夹:
可以删除编译产生的临时文件夹bin.v2。
参数
b2命令参数形式:
b2 [options] [properties] [targets]
类型 | 可选项 | 说明 |
---|---|---|
targets | install | 将头文件和库文件分别安装至配置位置的文件夹include与lib。 |
targets | stage | 仅生成库文件,将其安装至配置位置的文件夹stage。 |
options | –prefix | 对于install方式,为安装体系结构无关文件配置位置。Windows默认为C:\Boost,类Unix为/usr/local。 |
options | –exec-prefix | 对于install方式,为安装体系结构相关文件配置位置。默认与–prefix相同。 |
options | –libdir | 对于install方式,为安装库文件配置位置。默认在–prefix指定目录生成文件夹lib。 |
options | –includedir | 对于install方式,为安装头文件配置位置。默认在–prefix指定目录的生成文件夹include。 |
options | –stagedir | 对于stage方式,为安装库文件配置位置。默认在Boost根目录生成文件夹stage。 |
options | –build-type | 指定编译方式。可选minimal/complete,默认是最小构建,可以指定完全构建。 |
options | –build-dir | 指定构建时中间文件的存放位置。默认于Boost根目生成文件夹bin.v2,在构建完成之后可以删除。 |
options | –show-libraries | 仅展示需要构建和安装的Boost库文件列表。 |
options | –help | 介绍b2使用方法及参数含义。 |
options | –with-<library> | 仅构建指定库文件。 |
options | –without-<library> | 不生成指定库文件。默认生成所有库文件。 |
properties | toolset | 指定构建工具集。若不指定则自动搜索本地可用工具集。 |
properties | variant | 指定编译版本。可选debug/release,默认编译二者。 |
properties | link | 指定构建静态库或者动态库。可选static/shared,默认构建二者。 |
properties | runtime-link | 指定静态或者动态链接运行时库。可选static/shared,默认编译二者。 |
properties | threading | 指定生成单线程或者多线程二进制文件。可选single/multi,默认生成二者。 |
测试Boost库
创建项目
打开Visual Studio 2017,在菜单栏依次点击文件–>新建–>项目,操作步骤如图所示:
弹出新建项目窗口,左边依次展开已安装–>模板–>Visual C++,并选中Visual C++,右边选择空项目,下边填写项目名称,选择性地修改项目存放的位置,最后点击确定,完成新建项目。操作步骤如图所示:
在创建项目之后,解决方案资源管理器窗口显示有项目组织结构,界面内容如图所示:
右击项目的源文件文件夹,弹出右键菜单,依次选择添加–>新建项,操作步骤如图所示:
弹出添加新项窗口,窗口内容如图所示:
点开左上角的已安装,选中Visual C++,在右边窗格选择C++文件(.cpp),在下边填写源文件名称,位置默认不变,之后点击添加。
完成以上操作之后,出现新建源文件的编辑窗口,界面内容如图所示:
右击解决方案资源管理器窗口的项目,弹出右键菜单,选择属性,操作步骤如图所示:
弹出属性页窗口,左边依次展开配置属性–>C/C++,选中常规,查看右边SDL检查输入框的设置,操作步骤如图所示:
倘若未设置或者设置为否(sdl-),直接点击取消。
如果原来设置为是(/sdl),单击输入框,点击输入框右边向下的尖角,出现两个选项,选择否(/sdl-),并且点击确定。操作步骤如图所示:
导入库
打开项目属性页窗口,左边依次展开属性配置–>C/C++,选中常规,在右边附加包含目录输入框中,填入编译Boost库生成的include文件夹路径。由于include文件夹还有以boost版本命名的文件夹,因此填入的路径需要接上这个文件夹名。我的附加包含目录为E:\Download\Boost\boost_1_68_0\include\boost-1_68,界面内容如图所示:
由于Boost头文件和库文件繁多,为避免复制耗时和项目臃肿,因此以绝对路径方式配置路径,待到打包应用之时,再行拷贝依赖的库文件,并以相对路径方式配置。
左边展开链接器,选中常规,在右边附加库目录输入框中,填入编译Boost库生成的lib文件夹路径。我的附加库目录为E:\Download\Boost\boost_1_68_0\lib,界面内容如图所示:
最后点击确定,完成Visual Studio 2017以绝对路径方式引用Boost库的步骤。
测试代码
在创建的源文件中编写以下代码,测试Boost库是否导入成功。
#include <cstdlib>
#include <list>
#include <iostream>
#include <boost/assign.hpp>
#include <boost/foreach.hpp>
#define reverse_foreach BOOST_REVERSE_FOREACH
int main()
{
using namespace boost::assign;
// 类似于C++标准的初始化列表
std::list<int> iList = list_of(1)(2)(3);
iList += 4, 5, 6;
push_back(iList)(7)(8)(9);
push_front(iList)(0);
reverse_foreach(auto& i, iList)
std::cout << i << ' ';
return EXIT_SUCCESS;
}
编译以上代码,运行程序,结果如图所示: