提升1.66.0 msvc-14.1错误

时间:2018-01-05 20:36:38

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

我试图在我的Windows机器上编译boost 1.66.0。我安装了Visual Studio 2017(社区)作为我的IDE,14.1编译器肯定有效。但是,如果我尝试在任何VC2017本机命令提示中调用它

.\bootstrap
.\b2 variant=debug,release link=shared,static threading=single,multi address-model=64 toolset=msvc-14.1

我收到了很多以下错误:

  

' CL'不被认为是内部或外部命令,可操作   程序或批处理文件

如果我将工具集更改为msvc-14.0,一切正常。我还成功地使用msvc-14.1编译了boost 1.65.1。但是,从那时起,已经有许多Visual Studio更新。

编辑:我已尝试使用最新的编译器版本(19.12.25834)再次编译boost 1.65.1,现在我遇到了同样的问题。致电" cl"在VS 2017"" x64 Native Tools命令提示符中手动完成虽然工作得很好。

1 个答案:

答案 0 :(得分:1)

我的解决方案是:

  • 删除" C:\ Users \'用户名' \ AppData \ Local \ Temp \ b2_msvc_14.1_vcvars32_.cmd"
  • 再次构建

我的理由是:Boost是一个临时的" cmd"文件可能来自不支持" msvc-14.1"的旧版本。该文件未重建/删除。

背景: 我的两台开发机器之一也存在同样的问题,两者都非常相似(Windows 7)并且使用VC2017.3进行了更新。一个工作抱怨"未知版本" (_MSC_VER = 1911),但完成了建设。失败的人不会识别" cl"错误。在查看失败点时,它明确表示它正在调用" C:\ Users \'用户名' \ AppData \ Local \ Temp \ b2_msvc_14.1_vcvars32_.cmd"。

我在两台机器上进行了比较,发现失败的机器不包括设置__VSCMD_PREINIT_VCToolsVersion = 14.12.25827。可能还有其他差异,但这个肯定是肯定的。

我认为我错过了一些软件包或环境设置,但发现在执行" b2.exe --toolset = msvc-14.1 - clean-all&#34时文件未被删除时很奇怪;

我的解决方案是删除临时cmd文件 - 允许重建它。

手动删除" c:\ Users \'用户名' \ AppData \ Local \ Temp \ b2_msvc_14.1_vcvars32_.cmd"后,该建筑工作正常(1.65.1除外)抱怨版本_MSC_VER = 1911)。