使用 MSVC 14.0 (VS 2015) 编译 Boost 时编译器版本未知
Unknown compiler version while compiling Boost with MSVC 14.0 (VS 2015)
我试图在我的计算机上编译 Boost 库时得到 "Unknown compiler version - please run configure tests and report the results"。
我有最新的 Boost(截至 post 日期)- 1.58.0.
Boost 还不支持 MSVC 14.0 吗?我如何"run the configure tests"?
.
最新(发布此答案时)Boost 1.58 确实支持 MSVC 14.0 Preview,这是当时最新的 MS 编译器Boost 1.58 发布时间。
现在,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 1.59 版本的 boost repo here 中找到它。
更新:对于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 更新 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
上 运行ning 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。
更新3
为了将来参考,在您的 Visual Studio 工具命令提示符 运行 命令 cl /Bv
中查看您的版本号(参数区分大小写)。
我的输出如下:
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\cl.exe: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\c1.dll: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\c1xx.dll: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\c2.dll: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\link.exe: Version 14.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\mspdb140.dll: Version 14.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x6433\clui.dll: Version 19.11.25506.0
从这里你可以推断出 _MSC_VER
是 1911(从文本 "Version 19.11")和 _MSC_FULL_VER
是 191125506。
现在使用完整发布的 msvc-14.0 版本(Visual Studio 2015),你可以使用这个:
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026)
这有什么危险吗?我们是否应该等待正式编辑的下一个 Boost 版本具有此值?
编辑 boost/config/compiler/visualc.hpp
并用以下行之一替换关于最后已知和检查版本的测试:
1) 如果您想完全停用版本检查:
#if 0
2) 如果只想查看主要版本(select 单行):
#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) 如果要同时检查主要版本和次要版本(select 单行):
#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
我在 Ogre 1.9 - Visual Studio 2015 中尝试了以下代码。
最后已知和检查的版本是 19.00.23506(VC++ 2015 更新 1)
if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506)
一般情况下,打开 boost/config/compiler/visualc.hpp
并将鼠标悬停在 _MSC_FULL_VER
上以查看您环境中安装的版本。
我试图在我的计算机上编译 Boost 库时得到 "Unknown compiler version - please run configure tests and report the results"。
我有最新的 Boost(截至 post 日期)- 1.58.0.
Boost 还不支持 MSVC 14.0 吗?我如何"run the configure tests"?
最新(发布此答案时)Boost 1.58 确实支持 MSVC 14.0 Preview,这是当时最新的 MS 编译器Boost 1.58 发布时间。 现在,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 1.59 版本的 boost repo here 中找到它。
更新:对于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 更新 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
上 运行ning 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。
更新3
为了将来参考,在您的 Visual Studio 工具命令提示符 运行 命令 cl /Bv
中查看您的版本号(参数区分大小写)。
我的输出如下:
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\cl.exe: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\c1.dll: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\c1xx.dll: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\c2.dll: Version 19.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\link.exe: Version 14.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x64\mspdb140.dll: Version 14.11.25506.0
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\VC\Tools\MSVC.11.25503\bin\HostX64\x6433\clui.dll: Version 19.11.25506.0
从这里你可以推断出 _MSC_VER
是 1911(从文本 "Version 19.11")和 _MSC_FULL_VER
是 191125506。
现在使用完整发布的 msvc-14.0 版本(Visual Studio 2015),你可以使用这个:
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023026)
这有什么危险吗?我们是否应该等待正式编辑的下一个 Boost 版本具有此值?
编辑 boost/config/compiler/visualc.hpp
并用以下行之一替换关于最后已知和检查版本的测试:
1) 如果您想完全停用版本检查:
#if 0
2) 如果只想查看主要版本(select 单行):
#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) 如果要同时检查主要版本和次要版本(select 单行):
#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
我在 Ogre 1.9 - Visual Studio 2015 中尝试了以下代码。
最后已知和检查的版本是 19.00.23506(VC++ 2015 更新 1)
if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506)
一般情况下,打开 boost/config/compiler/visualc.hpp
并将鼠标悬停在 _MSC_FULL_VER
上以查看您环境中安装的版本。