Win10系统VS2019+boost_1.74.0环境配置

1 boost

1.1 简要介绍

Boost是一个可移植、提供源代码的、为C++语言标准库提供扩展的一些C++程序库的总称,作为标准库的后备,是C++标准化进程的开发引擎之一,相当于是C++准标准库,但Boost中也有很多是实验性质的东西,在实际开发使用中需要谨慎。

1.2 依赖库

boost不需要再配置其他库。

1.3 源码包下载

可以下载预编译版,boost预编译地址:
https://boost.teeks99.com/
也可以下载源码编译,boost源码地址:
githubhttps://github.com/boostorg/boost.git
注意:当克隆boost源码,需要加上子模块递归命令,否则克隆的代码其中的lib库全是空的,运行bootstrap.bat文件,在Building Boost.Build engine时,会报Failed to build Boost.Build engine的错误,如图:
image.png

解决方案如下:
git clone -b boost-1.74.0 --recursive [https://github.com/boostorg/boost.git](https://github.com/boostorg/boost.git)
但即使通过上述方法,从git官网上克隆下来的代码,lib库也全是空的,最终亲测有效的仓库链接如下:
git clone -b boost-1.74.0 --recursive [https://ghproxy.com/https://github.com/boostorg/boost.git](https://gitee.com/link?target=https%3A%2F%2Fghproxy.com%2Fhttps%3A%2F%2Fgithub.com%2Fboostorg%2Fboost.git)

后续:笔者通过克隆上述仓库的boost源码后,编译出的boost库仍不全,很多库都生成不了,查找原因发现在编译的过程中,很多库都报找不到头文件的错误,其实这些头文件很多本身是都有的,就是路径不对,都在lib文件夹下面好几层,所以编译的时候没找到,为了节省时间,笔者最终无奈安装了预编译版的boost库,然后将安装目录下的boost文件夹拷贝到源码目录下,再次编译便能正常生成很多库。
同理,预编译版安装目录下也有lib文件夹,把lib文件夹拷贝到源码目录下也可解决上述“运行bootstrap.bat文件,在Building Boost.Build engine时,会报Failed to build Boost.Build engine的错误”问题。
因此,下载预编译版的boost库,安装后,拷贝安装目录下的boostlib文件夹到源码目录,再次编译(例如,想要编译成静态库)是最方便的方法,当然,如果不需要再次编译,那么直接使用预编译版安装目录lib64-msvc-14.2下的库文件即可,就不用再拉取源码进行编译了。

2 编译步骤

2.1 生成b2.exe

使用VS tool中的Developer Command终端工具执行源代码路径D:\ThirdParty\boost\boost_1.74.0下的bootstrap.bat文件。

  1. 通过开始菜单,找到VS tool中的Developer Command终端工具并打开,如图:

image.png

  1. 切换至源代码路径目录D:\ThirdParty\boost\boost_1.74.0,执行bootstrap.bat文件,运行成功界面如图:

image.png
运行成功后,D:\ThirdParty\boost\boost_1.74.0将生成b2.exeproject-config.jam这两个文件。

2.2 生成boost库

继续在Developer Command命令行终端中执行如下命令:
b2.exe install toolset=msvc-14.2 architecture=x86 address-model=64 link=shared runtime-link=shared threading=multi --build-type=complete --build-dir="D:\ThirdParty\boost\boost_1.74.0_build" --prefix="D:\ThirdParty\boost\boost_1.74.0_build\install" --without-python
命令解释:

  • b2.exe:编译工具;
  • install/stagestage表示只生成库文件(.dll/.lib),install还会生成包含头文件的include目录;
  • toolsetVS2019对应msvc-14.2VS2017对应msvc-14.1VS2015对应msvc-14.0VS2013对应msvc-12.0
  • architecture:表示架构,也就是计算机CPU架构x86/ia64等;
  • address-model:表示地址长度,32/64
  • --build-typecomplete表示编译所有的boost库,默认为complete
  • link:表示生成动态/静态链接库,动态链接库是shared,静态链接库是static
  • runtime-link:表示动态/静态链接C/C++运行时库(C/C++ RuntimeLibrary);
  • threading:表示单(single)/多线程(multi)编译,一般我们的程序都会用到多线程;
  • variant:表示生成debug/release库,默认两种库都生成;
  • build-dir:编译生成的中间文件的路径,编译完成后可将这个目录全部删除;
  • --stagedir/prefixstagedir对应stageprefix对应install,表示编译生成文件的路径;
  • without/with:表示不需要编译/需要编译哪些库,一些自己不用的库可以不用编译;

注:编译x64库的指令是architecture=x86 address-model=64x86库的指令是architecture=x86

3 实际项目环境配置

注:以下通过属性表的方式进行环境配置。

3.1 附加包含目录

image.png

  1. $(boost)\include\boost_1.74.0_build

$(boost)(在系统环境变量中添加并设置)就是2.2节表中CMAKE_INSTALL_PREFIX选项的值。

3.2 附加库目录

image.png

  1. $(boost)\lib

3.3 附加依赖项

image.png

将库目录$(boost)\lib中文件后缀名为.lib的文件依次添加至附加依赖项中,并依次配置debug版本(库文件中有gd)和release版本,对于下载的预编译版本,库文件中有s的表示静态库。

注意,添加附加依赖项时,不要漏掉文件后缀名.lib

3.4 动态库

将动态库目录添加至系统环境变量Path,步骤如下:

  1. 计算机右击,点击“属性”;
  2. 点击“高级系统设置”;
  3. 点击“环境变量”;
  4. 双击Path
  5. 添加%boost%\lib,该目录下是包含了动态库文件。

image.png
image.png

本文使用的都是相对路径,因此需事先设置好环境变量boost,值为CMAKE_INSTALL_PREFIX对应的目录,也可以使用绝对路径。

image.png

注:上述步骤是按照加载boost动态库的方式进行配置的;
当然也可以按照静态库的方式配置,可省略步骤3.4

3.5 测试代码

#include <iostream>
#include <boost/sort/sort.hpp>
#include <algorithm>
#include <vector>
int main()
{
	std::vector<int> vec_array;
	while (vec_array.size() < 10) {
		vec_array.push_back(std::rand());
	}
	boost::sort::block_indirect_sort(std::begin(vec_array), std::end(vec_array));
	std::for_each(std::begin(vec_array), std::end(vec_array), [](int& value) {
		std::cout << value << std::endl;
		});
	std::system("pause");
	return 0;
}
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值