Из списка рассылки 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? Делает
-
v141implyvc141, или -
v141implyvc150?