欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Boost 在Windows环境下的配置过程

程序员文章站 2022-05-31 22:12:35
...

Boost 在Windows环境下的配置过程

首先列举所使用的环境如下:

  • WIN7 x64
  • VS13 pro
  • Boost 1.56.0
  • Python 2.7&3.7

前提条件要安装好VS和Python,如果Python没能成功安装则编译过程中Python相关库无法生成

详细的配置步骤如下:

  1. 首先从官网上下载相应版本,网速较慢则可考虑使用网上的镜像下载
  2. 下载完成后进行解压
  3. 接下来打开VS Tools文件夹。
    其中编译64位则选择打开“VS2013 x64 本机工具命令提示”,32位选择“VS2013 x86 本机工具命令提示”*
  4. 打开后进入解压后的boost 目录。
  5. 执行bootstrap.bat 脚本,进行编译引擎的准备
  6. 之后执行下面的命令来进行编译:
    bjam stage --toolset=msvc-12.0 architecture=x86 address-model=64 --without-graph --without-graph_parallel --stagedir="E:\boost\x64" link=shared runtime-link=shared threading=multi debug release
    
  • 其中msvc指定的是VS的版本,VS13对应为12.0,VS15 对应为14.0,可以打开VS版本确认一下;
  • model则指定位数为32或64;
  • 之后的without选项表示不对该部分进行编译;
  • –stagedir代表编译生成库的存放地址;
  • link代表该库的运行模式,即生成动态库亦或者静态库,而runtime-link则表明是动态/静态链接c++运行时库,相关关系如下图。在这里我们使用的动态库,因此全部指定为动态链接。
link
runtime link
client
Lib A
Lib B
  • 为提高编译速度,指定为多线程编译,threading = multi
  • 最后选择生成debug和release两个版本。

生成结束后要注意将其添加进环境变量中,其中包括python安装路径,boost源代码及编译好的动态库,完成之后即可在VS中进行调用,调用方法中要对项目属性进行一定的调整,包含以下两项:
在C++常规选项中“附加包含目录”中加入:$(BOOST_ROOT);$(PYTHON_ROOT)\include;
在链接器常规选项中“附加库目录”中加入:$(PYTHON_ROOT)/libs;$(BOOST_ROOT)/$(Platform)/lib;
PS:
过程中遇到了如下错误(差不多是这么说的):

C1803: Fatal error:can not open “pyconfig.h”: No such file or dictionary;

但其实是可以链接打开该文件的,因此一开始主要以为是配置过程出现问题,甚至根据网上的教程认为Boost库源码出错,最后滔哥找到问题所在:
VS内目录有问题!
开始配置时,将一部分路径放置在VC++目录下,但最后发现只有转移到C/C++下才可以成功运行。关于二者的区别,直接贴出《VC++ Directories》中的原版解释:

VC++ Directories: Include Directories

  • this value is inherited from the INCLUDE Windows environment variable which is defined outside of Visual Studio
    • environment variables can be: global to the computer or have user level scope
    • The INCLUDE and LIB environment variables are created when the Microsoft Windows SDK is installed with Visual Studio.

C/C++: Additional Include Directories

  • is a project level setting you will have to define this value for every project in your solution
  • this value can be persisted to source control
相关标签: Boost