使用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)