使用msvc 14.1(VS2017 RC)构建增强功能

Art*_* K. 40 boost visual-studio visual-c++

我试图使用最新的msvc 14.1和VS2017 RC来构建boost 1.63.所以我做了我正常做的一切,我打开了开发Cmd,然后运行了bootstrap.bat并运行命令

b2 -link=static -threading=multi
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我得到了这些错误:

E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:834: in generate-setup-cmd
*** argument error
* rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? )
* called with: ( msvc :  :  : default :  )
* missing argument setup-script
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrite-setup' being called
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:1076: in configure-really
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:201: in configure
E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:153: in msvc.init
E:/Coding/SDKs/boost_1_63_0/tools/build/src/build\toolset.jam:43: in toolset.using
E:/Coding/SDKs/boost_1_63_0/tools/build/src/build\project.jam:1052: in using
project-config.jam:3: in modules.load
E:/Coding/SDKs/boost_1_63_0/tools/build/src\build-system.jam:249: in load-config
E:/Coding/SDKs/boost_1_63_0/tools/build/src\build-system.jam:412: in load-configuration-files
E:/Coding/SDKs/boost_1_63_0/tools/build/src\build-system.jam:524: in load
E:\Coding\SDKs\boost_1_63_0\tools\build\src/kernel\modules.jam:295: in import
E:\Coding\SDKs\boost_1_63_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build
E:\Coding\SDKs\boost_1_63_0\boost-build.jam:17: in module scope
Run Code Online (Sandbox Code Playgroud)

我并不熟悉助力,所以也许你们中的一个人可以给我一个提示

Nic*_*ick 73

基于KindDragons和CPlusPlus OOA和D答案,我编译了Boost 1.63.对于64位.运行"VS 2017的x64 Native Tools命令提示符"命令提示符:

1)运行: bootstrap.bat

2)打开project-config.jam.这是我的:

import option ; 

using msvc : 14.0 : "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\cl.exe"; 

option.set keep-going : false ;
Run Code Online (Sandbox Code Playgroud)

部分:14.10.25017随着Windows SDK的更新而不断变化.所以相应地更新它.

3)跑 b2 toolset=msvc-14.0 address-model=64

  • 如果只有我可以两次投票......我几乎为此创建了第二个账户.. (4认同)
  • 你是冠军! (2认同)

Kin*_*gon 35

Boost 1.63并不完全支持VS2017,但你可以欺骗它找到VC++ 2017编译器:

  1. bootstrap.bat在boost目录中运行
  2. 更新project-config.jam以包含: using msvc : 14.0 : <path to x86 or x64 cl.exe>.应该是这样的"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.24911\bin\HostX64\x64\cl.exe"
  3. 从Windows开始菜单运行"VS 2017 RC的开发人员命令提示符",从使用x86 vcvars或x64 vcvars配置的shell进行boostrap.
  4. b2 toolset=msvc-14.0在该命令提示符下运行.对于x64构建,请添加address-model=64到b2命令行.

更新:Boost 1.64应支持VS2017

从开始菜单运行"VS 2017的x86 Native Tools命令提示符"或"VS 2017的x64 Native Tools命令提示符",而不是在命令提示符内运行b2:

32位: b2 toolset=msvc-14.1 --build-dir=.x86 --stagedir=stage_x86

64位: b2 toolset=msvc-14.1 address-model=64 --build-dir=.x64 --stagedir=stage_x64

添加link=shared以构建共享库


小智 10

我创建了一个批处理脚本,它在以下github仓库中构建了32位和64位二进制文​​件:https://github.com/manuelgustavo/boost_build

秘诀在于使用Visual Studio 2017的Developer Command Prompt.它根据需要设置所有环境变量.

然后从它,你可以执行以下的事情:

对于32位:

b2.exe --toolset = msvc-14.0 architecture = x86 address-model = 32 --stagedir =".\ stage32"threading = multi --build-type = complete stage

对于64位:

b2.exe --toolset = msvc-14.0 architecture = x86 address-model = 64 --stagedir =".\ stage64"threading = multi --build-type = complete stage

或者如果您愿意,只需访问https://github.com/manuelgustavo/boost_build并按照其中的步骤操作即可.