Windows10+VS2017环境安装Boost库遇missing argument global-setup错误
解决Boost 1.60在VS2017下运行b2的参数错误问题
这个错误的核心原因很明确:Boost 1.60版本发布于2016年,完全不支持2017年才推出的Visual Studio 2017。当时的Boost Build(也就是驱动b2的构建系统)还没有适配VS2017的环境配置逻辑,导致调用generate-setup-cmd规则时出现参数缺失的问题。
下面给你两种可行的解决思路:
方案一:升级Boost到支持VS2017的版本(推荐)
Boost从1.64版本开始正式支持VS2017,直接升级是最省心的解决方案:
- 下载Boost 1.64及以上的稳定版本(比如1.70.0,兼容性覆盖更全面)的源码包
- 打开Developer Command Prompt for VS 2017,切换到Boost源码根目录
- 重新执行
bootstrap.bat生成最新的构建配置 - 再运行
b2即可正常构建,如果你需要指定编译架构或工具集,可以加参数,比如:
(b2 toolset=msvc-14.1 architecture=x86 address-model=64msvc-14.1是VS2017对应的编译器版本号)
方案二:手动修改Boost 1.60的构建文件(不推荐,仅作应急)
如果你非要坚持使用Boost 1.60,可以尝试修改Boost Build的配置文件来适配VS2017,但这个方法容易引入其他问题:
- 找到文件
C:\Program Files\boost\boost_1_60_0\tools\build\src\tools\msvc.jam - 定位到
generate-setup-cmd规则的定义(大概在798行),检查它的参数列表,确保调用时的参数数量和顺序匹配(错误提示里是缺少global-setup参数) - 或者直接从Boost 1.64+版本中提取
msvc.jam文件替换掉当前的旧文件 - 修改完成后重新运行
bootstrap.bat和b2
额外注意事项
- 务必使用对应架构的Developer Command Prompt:比如要编译64位Boost,就打开
x64 Native Tools Command Prompt for VS 2017,避免环境变量不匹配 - 如果升级后还是遇到工具集识别问题,可以在
b2命令里明确指定工具集版本,比如b2 toolset=msvc-14.1
内容的提问来源于stack exchange,提问作者Kasparov92
相关产品推荐
相关产品推荐

