Из списка рассылки Boost я понимаю, что VS2017 имеет следующие номера версий, которые нам, вероятно, будут наиболее интересны:
Visual Studio 15.0
cl; C/C++ Compiler 19.10
Platform Toolset: v141
В среде IDE Visual Studio 2017 определены следующие макросы:
CrtSDKReferenceVersion 14.0
MSBuildToolsVersion 15.0
PlatformToolsetVersion 141
VCToolsVersion 14.10.25017
VisualStudioVersion 15.0
Во время компиляции следующие переменные #define
'd:
_MSC_VER 1910
_MSC_FULL_VER 191025017
cl.exe
содержится в папке MSVC с версией инструментов VC. Полный путь к папке x64
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64
cl /Bv
из списков командной строки:
Compiler Passes:
cl.exe: Version 19.10.25017.0
c1.dll: Version 19.10.25017.0
c1xx.dll: Version 19.10.25017.0
c2.dll: Version 19.10.25017.0
link.exe: Version 14.10.25017.0
mspdb140.dll: Version 14.10.25017.0
1033\clui.dll: Version 19.10.25017.0
Примечание mspdb140.dll
и link.exe
перечислены в версии 14.10.25017.0.
И здесь кажется, что msvc : 14.1
следует использовать как набор инструментов для повышения. И вот еще один ответ, где в некоторых комментариях говорится о форматировании имени компилятора.
При компиляции я получаю имена библиотек с помощью v141, например: boost_atomic-vc141-mt-1_64.lib
Но в CMake функция _Boost_GUESS_COMPILER_PREFIX
имеет следующее:
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10)
set(_boost_COMPILER "-vc150")
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
set(_boost_COMPILER "-vc140")
Итак, какую версию следует использовать? vc141
или vc150
? Делает
-
v141
implyvc141
, или -
v141
implyvc150
?