Подтвердить что ты не робот

Неизвестная версия компилятора при компиляции Boost с MSVC 14.0 (VS 2015)

Я получаю "Неизвестная версия компилятора - пожалуйста, запустите конфигурационные тесты и сообщите результаты" при попытке скомпилировать библиотеку Boost на моем компьютере.
У меня самый последний Boost (на дату поста) - 1.58.0.
Boost пока не поддерживает MSVC 14.0? Как мне "запустить тесты настройки"?

Screenshots.

4b9b3361

Ответ 1

Последний (во время публикации этого ответа) 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 repo здесь для предстоящей версии Boost 1.59.

Обновить. Для RTM для Visual Studio 2015 установите для этого:

// 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)

Также, если вы ранее запускали Boost.Build на toolset=msvc-14.0, то удалите из 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 Tools запросите команду cl /Bv, чтобы просмотреть номера версий (параметры чувствительны к регистру).

Mine выводит следующее:

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.

Ответ 2

Отредактируйте 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

Ответ 3

В общем, откройте boost/config/compiler/visualc.hpp и наведите указатель мыши на _MSC_FULL_VER, чтобы увидеть версию, установленную в вашей среде.

Ответ 4

Теперь, используя полностью выпущенную версию msvc-14.0 (Visual Studio 2015), вы можете использовать это:

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

Есть ли опасность? Должны ли мы вместо этого ждать следующего выпуска Boost, который был официально отредактирован, чтобы иметь это значение?

Ответ 5

Я пробовал следующий код для Ogre 1.9 в Visual Studio 2015, и этот код работал

последняя известная и проверенная версия - 19.00.23506 (VС++ 2015 Update 1): if (_MSC_VER > 1800 && _MSC_FULL_VER > 190023506)