【发布时间】:2017-08-01 12:17:26
【问题描述】:
From the Boost mailing list 我知道VS2017有以下我们可能最感兴趣的版本号:
Visual Studio 15.0
cl; C/C++ Compiler 19.10
Platform Toolset: v141
以下宏在 Visual Studio 2017 IDE 中定义:
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 is contained within an MSVC folder 与 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 一起列出。
而here 似乎应该将msvc : 14.1 用作boost 的工具集。还有here is another answer 一些cmets 谈论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,或者是 -
v141暗示vc150?
【问题讨论】:
-
vc150对我来说似乎是 CMake 的_Boost_GUESS_COMPILER_PREFIX中的一个错误。您使用的是什么版本的 CMake? VS2017 的工具集v141与 VS2015 的v140二进制兼容,我听说没有v(c)150。很可能,那个 CMake 宏的开发者正在推断和猜测 VS2017 的工具集。 -
@Torbjörn 同意。有一个 VC 15.0,但没有工具集 15.0(还),文件名指的是工具集。我正在使用 CMake 3.8.0-rc1。
-
如果你使用的是CMake版本3.8.0你需要使用150。这个问题必须与 Boost 更改编号方案的方式有关。
-
@StAlphonzo 感谢您的更新。您能否指出 Boost 编号方案的更改?我不明白为什么会是 150。
-
我将添加一个答案,使其格式正确并适合狭小的空间。
标签: c++ boost cmake visual-studio-2017