从Boost邮件列表上了解到,VS2017有以下版本号,这些版本号可能是我们最感兴趣的:
Visual Studio 15.0
cl; C/C++ Compiler 19.10
Platform Toolset: v141
以下宏已在Visual Studio 2017集成开发环境中定义:
CrtSDKReferenceVersion 14.0
MSBuildToolsVersion 15.0
PlatformToolsetVersion 141
VCToolsVersion 14.10.25017
VisualStudioVersion 15.0
编译期间将定义以下变量:#define
_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
作为boost的工具集。而这里是另一个答案,其中一些评论谈到了boost编译器的命名。
当我编译时,我会得到带有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
是否意味着vc141
,还是意味着vc150
?
vc150
对我来说似乎是CMake的_Boost_GUESS_COMPILER_PREFIX
的一个bug。您使用的是哪个版本的CMake?VS2017的工具集v141
与VS2015的v140
是二进制兼容的,而我从未听说过v(c)150
。可能,该CMake宏的开发者正在推测和猜测VS2017的工具集。 - Torbjörn