我正在尝试用最新的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
我不熟悉助力,所以也许你们中的一个可以给我一个提示
答案 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编译器:
bootstrap.bat
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"
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
以构建共享库
答案 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