VS2017下编译和配置boost库

VS2017下编译和配置boost库

第一步:
到官网http://www.boost.org/下载boost库,最好下载1.6x最新版
第二步:解压。
可解压到固定的目录,我是解压到E:\mylib\boost
第三步:环境配置

VS2017更加注重跨平台性,安装文件较多,VC有三个版本,分别是arm、Hostx64、Hostx86,本文使用Hostx64。
注意,需要使用cl.exe. 默认安装时,编译器cl.exe并不在环境变量中,需要配置。

测试环境变量:
Ctrl+r输入cmd,输入cl,若显示:'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件。说明没有环境变量。

配置环境变量
计算机右击-属性-高级系统设置-环境变量-选择Path编辑-添加cl的路径:
E:\VS2017\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64



得到上述结果,说明环境配置完成。

第四步:开始编译
右击--更多—以管理员身份运行VS2017开发人员命令提示,英文名称x64 Native Tools Command Prompt for VS 2017



1.输入命令,进入目录:



2.输入命令: bootstrap.bat

等待一分钟左右在E:\mylib\boost\boost_1_64_0生成几个文件:



3.在E:\mylib\boost\boost_1_64_0下有一个项目配置文件project-config.jam,打开作如下修改:


第五步:安装

在E:\mylib\boost\boost_1_64_0下新建一个目录build存放编译时产生的中间文件,编译结束后可以删除。
运行:
b2.exe stage --toolset=msvc-14.1 address-model=64 --stagedir="E:\mylib\boost\bin1.64.0\VC14.
1" threading=multi --build-type=complete --build-dir="E:\mylib\boost\boost_1_64_0\build"

注意版本问题:这里是VC14.1

具体介绍:

--toolset:设置编译器,如果用VC,设msvc, 用MinGW就设gcc。

stage:可选install,选stage只生成库(静态库和动态库),install还包含include目录,其实,可以直接用我们下载下来的BOOST包里的boost目录,这个目录和install生成的include目录内容基本一样。所以也就不用了。

--build-dir=”[temporary folder name”:编译的临时文件存放位置。

--stagedir=” stage folder name]”:存放编译后库文件的路径,默认是stage。

--build-type=complete:编译所有版本

{

  variant=debug|release        决定编译什么版本(Debug or Release?)

  link=static|shared           决定使用静态库还是动态库。

  threading=single|multi       决定使用单线程还是多线程库。

  runtime-link=static|shared   决定是静态还是动态链接C/C++标准库。

}

link:是动态库还是静态库,static | shared,一般默认静态。

address-mode:address-model=64,如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。如果运行在VS32位的命令行下需要添加” architecture=x86”,笔者使用x64 Native Tools Command Prompt for VS 2017没有x86与x64之间的矛盾,所以未设置。

这个过程大致需要半个小时:生成的这个文件夹就是库文件和动态链接所在。中间文件build可以直接删除。



第六步:在VS2017中的配置:

1.新建项目:

VisualC++/win32控制台应用程序
应用程序设置选择控制台应用程序,附加选项选择预编译头,完成即可。

2.粘贴代码

// boostest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <boost/lexical_cast.hpp>
#include <iostream>
using namespace std;
int main()
{
        using boost::lexical_cast;
        int a = lexical_cast<int>("123");
        double b = lexical_cast<double>("123.0123456789");
        string s0 = lexical_cast<string>(a);
        string s1 = lexical_cast<string>(b);
        cout << "number: " << a << "  " << b << endl;
        cout << "string: " << s0 << "  " << s1 << endl;
        int c = 0;
        try {
               c = lexical_cast<int>("abcd");
        }
        catch (boost::bad_lexical_cast& e) {
               cout << e.what() << endl;
        }
    return 0;
}

3.修改调试平台

因为编译的静态库和动态链接选择是64位的,选择64位平台。



4.设置编译环境和链接文件


1.设置头文件目录:
项目->属性->C/C++->常规->附加包含目录
添加:E:\mylib\boost\bin1.64.0路径



2.设置库文件目录:
项目->属性->链接器->常规->附加库目录
添加:E:\mylib\boost\bin1.64.0\VC14.1\lib路径


第七步:调试运行
ctrl+F5
相关文章
相关标签/搜索