1.编译boost库
1.1下载boost
下载官网地址:boost_1_78_0
注意,有时候会下载不全,下载之后检查一下
如果下载不完全,编译不能通过
1.2 解压
解压,一定要解压到一个指定文件夹,否则运行bootstrap.bat的时候会报错
即,解压后的路径最后是:
D:\boost\boost_1_78_0
而不是
d:\boost_1_78_0
如果直接是d:\boost_1_78_0,运行boostrap.bat报错如下:
D:\boost_1_78_0>bootstrap.bat msvc
Building Boost.Build engine
'.\build.bat' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Failed to build Boost.Build engine.
1.3 配置VS2017的cl.exe
cl.exe所在路径:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
配置环境cl.exe的路径到path环境变量中
如果cl.exe配置成功,cmd模式下输入cl如下所示
C:\Users\xrw020>cl
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.16.27045 版
版权所有(C) Microsoft Corporation。保留所有权利。
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]
否则报错:
cl不是内部命令等。
1.4 编译boost
1.4.1基本步骤
以管理员身份运行VS2017开发人员命令提示,英文名称x64 Native Tools Command Prompt for VS 2017
然后切换到boost所在目录,例如我的目录是d:\boost\boost_1_78_0
输入命令:
d:
进入d盘,然后进入文件夹,输入命令:
cd boost\boost_1_78_0
进入boost_1_78_0目录之后,运行该目录下的bootstrap.bat,运行命令如下:
bootstrap.bat msvc
运行结果,生成b2.exe,project-config.jam文件
运行b2.exe编译boost库,运行指令如下:
b2.exe stage --toolset=msvc-14.1 address-model=64 --stagedir="D:\boost\bin1.78.0\VC14.1"threading=multi --build-type=complete –-build-dir="D:\boost\boost_1_78_0\build"
也可以直接运行b2.exe,下面配置boost库采用的是直接运行b2.exe的方式。
1.4.2 b2命令参数
b2.exe的命令参数说明:
–toolset
指定编译器版本,VS为MSVC,
visual studio版本号与MSVC版本号对应关系
MSC 1.0 _MSC_VER == 100
MSC 2.0 _MSC_VER == 200
MSC 3.0 _MSC_VER == 300
MSC 4.0 _MSC_VER == 400
MSC 5.0 _MSC_VER == 500
MSC 6.0 _MSC_VER == 600
MSC 7.0 _MSC_VER == 700
MSVC++ 1.0 _MSC_VER == 800
MSVC++ 2.0 _MSC_VER == 900
MSVC++ 4.0 _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2 _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
运行Visual Studio,点击工具栏“帮助”→“关于MicroSoft Visual Studio”,如下图打钩部分即是:
注意,–toolset=msvc-14.1, 这里的14.1与下图的保持一致
1.4.4 错误处理
运行b2.exe时报错
D:\boost\boost_1_78_0>b2.exe stage --toolset=msvc-14.16 address-model=64 --stagedir="D:\boost\bin1.78.0\VC14.16"threading=multi --build-type=complete --build-dir="D:\boost\boost_1_78_0\build"
[errno 2] option.jam (No such file or directory)
D:/boost/boost_1_78_0/tools/build/src/kernel/bootstrap.jam:124: in boost-build
ERROR: rule "option.process" unknown in root module.
D:/boost/boost_1_78_0/boost-build.jam:17: in module scope
报错信息:
找不到option.jam文件
解决方案:
先前在官网下载的boost_1_78_0下载的是boost_1_78_0.7z文件,现在下载一个boost_1_78_0.zip解压并覆盖源代码,问题解决。
2.VS2017配置boost库
打开VS2017,新建-项目-Visual c+±Windows 控制台应用程序
项目属性-C/C+±常规-附加包含目录,添加Boost所在的根目录,即使:
D:\boost\boost_1_78_0
项目属性-链接器-常规-附加库目录,添加stage中的lib文件,即:
D:\boost\boost_1_78_0\stage\lib
测试代码:
#include <iostream>
#include <boost/lexical_cast.hpp>
#include <string>
using std::cout;
using std::string;
using std::endl;
int main() {
using boost::lexical_cast;
int a = lexical_cast<int>("123");
double b = lexical_cast<double>("123.09876");
string s0 = lexical_cast<string>(a);
cout << a << endl;
cout << b << endl;
cout << s0 << endl;
}
3.参考文献
boot getting start guide
如何查看Visual Studio版本、与MSVC版本号的对应关系
VS2017编译配置Boost库
Visual Studio编译Boost
VS2017下Boost编译
VS2017下boost配置