我得到"未知的编译器版本 - 请运行配置测试并报告结果"试图在我的电脑上编译Boost库时 我有最近的Boost(截至发布日期) - 1.58.0 没有提升支持MSVC 14.0,但是?我如何"运行配置测试"?
答案 0 :(得分:69)
最新(发布此答案时) Boost 1.58 支持 MSVC 14.0 Preview ,这是Boost 1.58发布时最新的MS编译器。 现在,最新版本的 Visual Studio 是 2015 RC ,这不在boost 1.58配置文件中。
要停止Boost 1.58,抱怨未知的编译器版本编辑boost/config/compiler/visualc.hpp
并替换:
// 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)
你可以在boost repo here中找到即将发布的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)
Update2 :对于 Visual Studio 2015 Update 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
删除以下缓存文件:
b2_msvc_14.0_vcvarsall_x86.cmd
b2_msvc_14.0_vcvarsall_x86_amd64.cmd
b2_msvc_14.0_vcvarsall_x86_arm.cmd
有关here的更多信息。
<强> 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(来自文本&#34;版本19.11&#34;)_MSC_FULL_VER
是191125506。
答案 1 :(得分:36)
修改boost/config/compiler/visualc.hpp
并使用以下某行之一替换有关上一个已知和已检查版本的测试:
1)如果要完全停用版本检查:
#if 0
2)如果您只想检查主要版本(选择一行):
#if (_MSC_VER > 1900) // Visual Studio 2015
#if (_MSC_VER > 1911) // Visual Studio 2017 15.0, 15.1 and 15.2
#if (_MSC_VER > 1911) // Visual Studio 2017 15.3 and 15.4
#if (_MSC_VER > 1912) // Visual Studio 2017 15.5
#if (_MSC_VER > 1913) // Visual Studio 2017 15.6
#if (_MSC_VER > 1914) // Visual Studio 2017 15.7
#if (_MSC_VER > 1915) // Visual Studio 2017 15.8
#if (_MSC_VER > 1916) // Visual Studio 2017 15.9
#if (_MSC_VER > 1920) // Visual Studio 2019 16.0
3)如果要同时检查主要版本和次要版本(选择一行):
#if (_MSC_VER > 1900 && _MSC_FULL_VER > 190023506) // Visual Studio 2015 Update 1
#if (_MSC_VER > 1900 && _MSC_FULL_VER > 190023918) // Visual Studio 2015 Update 2
#if (_MSC_VER > 1900 && _MSC_FULL_VER > 190023918) // Visual Studio 2015 Update 3
#if (_MSC_VER > 1910 && _MSC_FULL_VER > 191025017) // Visual Studio 2017 15.0, 15.1 and 15.2
#if (_MSC_VER > 1911 && _MSC_FULL_VER > 191125542) // Visual Studio 2017 15.3 and 15.4
#if (_MSC_VER > 1912 && _MSC_FULL_VER > 191225835) // Visual Studio 2017 15.5
#if (_MSC_VER > 1913 && _MSC_FULL_VER > 191326132) // Visual Studio 2017 15.6
#if (_MSC_VER > 1914 && _MSC_FULL_VER > 191426433) // Visual Studio 2017 15.7
#if (_MSC_VER > 1915 && _MSC_FULL_VER > 191526726) // Visual Studio 2017 15.8
#if (_MSC_VER > 1916 && _MSC_FULL_VER > 191627030) // Visual Studio 2017 15.9
#if (_MSC_VER > 1920 && _MSC_FULL_VER > 192027508) // Visual Studio 2019 16.0
答案 2 :(得分:5)
一般情况下,请打开boost/config/compiler/visualc.hpp
并将鼠标悬停在_MSC_FULL_VER
上,以查看您环境中安装的版本。
答案 3 :(得分:4)
现在使用完全发布的msvc-14.0版本(Visual Studio 2015),您可以使用:
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026)
这有危险吗?我们是否应该等待已正式编辑的下一版Boost具有此值?
答案 4 :(得分:-1)
我在Visual Studio 2015中为Ogre 1.9尝试了以下代码,并且代码是
上次已知和检查的版本是19.00.23506(VC ++ 2015 Update 1): if(_MSC_VER&gt; 1800&amp;&amp; _MSC_FULL_VER&gt; 190023506)