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

时间:2017-01-04 12:54:30

标签: visual-studio visual-c++ boost

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

b2 -link=static -threading=multi

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

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

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

4 个答案:

答案 0 :(得分:69)

基于KindDragons和CPlusPlus OOA和D答案我编译了Boost 1.63。对于64位。 运行" x64本机工具命令提示符VS 2017"命令提示符:

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 ;

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

3)运行b2 toolset=msvc-14.0 address-model=64

答案 1 :(得分:35)

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

  1. 在boost目录中运行bootstrap.bat
  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. 之类的东西
  4. 从Windows开始菜单运行“VS 2017 RC的开发人员命令提示符”,从使用x86 vcvars或x64 vcvars配置的shell进行boostrap。
  5. 在该命令提示符下运行b2 toolset=msvc-14.0。对于x64构建,请将address-model=64添加到b2命令行。
  6. 更新: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以构建共享库

答案 2 :(得分: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并按照其中的步骤操作。

答案 3 :(得分:1)

使用Visual Studio 2017进行构建的另一个提示在我的案例中有效。如果您已使用旧版Visual Studio构建 Boost ,请删除位于用户TEMP文件夹中的 Boost 引导脚本生成的临时批处理文件,例如:

C:\Users\MYUSER~1\AppData\Local\Temp\b2_msvc_14.1_vcvarsx86_amd64_.cmd

解决方案来自这个主题:http://boost.2283326.n4.nabble.com/Building-boost-fails-with-VS2017-v15-5-2-td4700909.html