转载自 :http://blog.csdn.net/tdl1001/article/details/78726950
使用 VS2017 的命令行,就通过了,生成了 bjam.exe
环境:WINDOW10 1709 + VS2017 COMMUNITY
从http://www.boost.org/users/history/version_1_65_1.html下载windows版的boost,调用bootstrap.bat编译失败。
这个错误持续好久了,网上没找到相关线索,就自己琢磨了一下,原因是cmd执行过程中当前目录不对导致。
调用关系如下:
/bootstrap.bat 调用了 /tools/build/bootstrap.bat
/tools/build/bootstrap.bat 调用了 /tools/build/src/engine/build.bat
/tools/build/src/engine/build.bat 调用了 /.../config_toolset.bat
手动调用build.bat发现输出如下:
- C:\boost_1_65_1\tools\build\src\engine>build.bat
- **********************************************************************
- ** Visual Studio 2017 Developer Command Prompt v15.0.26730.8
- ** Copyright (c) 2017 Microsoft Corporation
- **********************************************************************
- [vcvarsall.bat] Environment initialized for: 'x86'
- ###
- ### Using 'vc141' toolset.
- ###
- C:\Users\tdl\source>if exist bootstrap rd /S /Q bootstrap
- C:\Users\tdl\source>md bootstrap
- C:\Users\tdl\source>cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\yyacc0 yyacc.c
- yyacc.c
- c1: fatal error C1083: Cannot open source file: 'yyacc.c': No such file or directory
原来/tools/build/src/engine/build.bat:162 call config_toolset.bat 会更改当前文件夹。
于是在162行后增加一行:
- cd /d %~dp0
有网友说,想编译64位的boost库,需要从VS的x64命令行启动,而不是随便一个cmd。