您的位置:首页 > 运维架构

boost编译之 fatal error C1083: Cannot open source file: 'yyacc.c': No such file or directory

2017-12-06 09:32 549 查看
环境: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
问题就暴露了,在engine文件夹下调用的bat,怎么后面报错时都是在/users/user/source下执行的?

原来/tools/build/src/engine/build.bat:162 call config_toolset.bat 会更改当前文件夹。

于是在162行后增加一行:

cd /d %~dp0
把当前目录改回/tools/build/src/engine/,即可编译出Boost.Build

有网友说,想编译64位的boost库,需要从VS的x64命令行启动,而不是随便一个cmd。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  boost build yyacc.c
相关文章推荐