簡體   English   中英

使用 MSVC 14.0 (VS 2015) 編譯 Boost 時出現未知的編譯器版本

[英]Unknown compiler version while compiling Boost with MSVC 14.0 (VS 2015)

嘗試在我的計算機上編譯 Boost 庫時,我收到“未知的編譯器版本 - 請運行配置測試並報告結果”。
我有最新的 Boost(截至發帖日期)- 1.58.0。
Boost 不支持 MSVC 14.0 嗎? 我如何“運行配置測試”?

截圖 .

最新的(在發布此答案時) Boost 1.58確實支持MSVC 14.0 Preview ,它是 Boost 1.58 發布時最新的 MS 編譯器。 現在,最新版本的Visual Studio2015 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。

更新:對於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上運行 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

更多關於這里

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(來自文本“Version 19.11”),而_MSC_FULL_VER是 191125506。

編輯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

通常,打開boost/config/compiler/visualc.hpp並將鼠標懸停在_MSC_FULL_VER以查看安裝在您環境中的版本。

現在使用完全發布的 msvc-14.0 (Visual Studio 2015) 版本,您可以使用它:

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

這有什么危險嗎? 我們是否應該等待已正式編輯的下一個 Boost 版本具有此值?

我在 Ogre 1.9 - Visual Studio 2015 中嘗試了以下代碼。

最后已知和檢查的版本是 19.00.23506(VC++ 2015 更新 1)

if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM