使用MSVC 14.0编译Boost时的未知编译器版本(VS 2015)

当我试图在我的电脑上编译Boost库时,我得到“未知的编译器版本 – 请运行configuretesting并报告结果”。
我有最近的升压(截至date) – 1.58.0。
不提升支持MSVC 14.0呢? 我如何“运行configurationtesting”?
截图 。

最新(在发布这个答案的时候) Boost 1.58确实支持MSVC 14.0 Preview ,这是Boost 1.58发布时最新的MS编译器。 现在, Visual Studio的最新版本是2015 RC ,它不包含在boost 1.58configuration文件中。

停止Boost 1.58抱怨未知的编译器版本编辑boost/config/compiler/visualc.hpp并replace:

 // last known and checked version is 19.00.22129 (VC14 Preview): #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022310) 

有:

 // last known and checked version is 19.00.22816 (VC++ 2015 RC): #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022816) 

你可以find已经完成在即将推出的Boost 1.59发布的助推回购。

更新 :对于Visual Studio 2015 RTM将其设置为:

 // last known and checked version is 19.00.23026 (VC++ 2015): #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026) 

更新2 :对于Visual Studio 2015更新1将其设置为:

 // last known and checked version is 19.00.23506 (VC++ 2015 Update 1): #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506) 

此外,如果您以前在toolset=msvc-14.0上运行Boost.Build,则从C:\Users\<name>\AppData\Local\Temp删除以下caching的文件:

 b2_msvc_14.0_vcvarsall_x86.cmd b2_msvc_14.0_vcvarsall_x86_amd64.cmd b2_msvc_14.0_vcvarsall_x86_arm.cmd 

更多关于这里 。

Update3为了将来的参考,在Visual Studio工具命令提示符中运行命令cl /Bv来查看您的版本号(参数区分大小写)。

矿山输出以下内容:

 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\cl.exe: Version 19.11.25506.0 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c1.dll: Version 19.11.25506.0 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c1xx.dll: Version 19.11.25506.0 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c2.dll: Version 19.11.25506.0 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\link.exe: Version 14.11.25506.0 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\mspdb140.dll: Version 14.11.25506.0 C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\1033\clui.dll: Version 19.11.25506.0 

从这里你可以推断出_MSC_VER是1911(从版本19.11开始),而_MSC_FULL_VER是191125506。

这是用于Visual Studio 2015更新1:

 #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506) 

这是用于Visual Studio 2015更新2:

 #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023918) 

这是为Visual Studio 2015更新3:

 #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023918) 

这是Visual Studio 2017(Credit:sunny moon):

 #if (_MSC_VER > 1910 && _MSC_FULL_VER > 191025017) 

这是为Visual Studio 2017 15.3:

 #if (_MSC_VER > 1911 && _MSC_FULL_VER > 191125506) 

或者仅仅为Visual Studio 2017 15.3(Credit zzz):

 #if (_MSC_VER > 1911) 

现在使用完整版本的msvc-14.0(Visual Studio 2015),你可以使用这个:

 #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026) 

这有什么危险吗? 我们是否应该等待已经正式编辑的Boost的下一个版本具有这个值?

通常,打开boost/config/compiler/visualc.hpp并将鼠标hover在_MSC_FULL_VER以查看安装在您的环境中的版本。

我已经尝试了Visual Studio 2015中的Ogre 1.9的以下代码,并且该代码是工作的

最后一个已知和检查的版本是19.00.23506(VC ++ 2015 Update 1):if(_MSC_VER> 1800 && _MSC_FULL_VER> 190023506)