From the Boost mailing danh sách Tôi hiểu rằng VS2017 có số phiên bản sau mà chúng tôi có lẽ sẽ quan tâm nhất:Version số cho Visual Studio 2017, Boost và CMake
Visual Studio 15.0
cl; C/C++ Compiler 19.10
Platform Toolset: v141
Các macro sau đây được định nghĩa trong visual Studio 2017 IDE:
CrtSDKReferenceVersion 14.0
MSBuildToolsVersion 15.0
PlatformToolsetVersion 141
VCToolsVersion 14.10.25017
VisualStudioVersion 15.0
trong biên soạn các biến sau đây là #define
'd:
_MSC_VER 1910
_MSC_FULL_VER 191025017
cl.exe
is contained within an MSVC folder với phiên bản công cụ VC. Hoàn chỉnh đường x64
thư mục là
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64
cl /Bv
từ danh sách dòng lệnh:
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
Thông báo mspdb140.dll
và link.exe
được liệt kê với phiên bản 14.10.25017.0.
Và here dường như msvc : 14.1
nên được sử dụng làm công cụ cho tăng. Và here is another answer nơi một số nhận xét nói về cách đặt tên trình biên dịch của trình tăng.
Khi tôi biên soạn tôi nhận được tên các thư viện với v141 ví dụ .: boost_atomic-vc141-mt-1_64.lib
Nhưng trong CMake các _Boost_GUESS_COMPILER_PREFIX
chức năng có sau đây:
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")
Vì vậy, phiên bản nào nên được sử dụng? vc141
hoặc vc150
? Liệu
v141
bao hàmvc141
, hoặc làmv141
bao hàmvc150
?
'vc150' có vẻ giống như một lỗi trong' _Boost_GUESS_COMPILER_PREFIX' của CMake đối với tôi. Bạn đang sử dụng phiên bản CMake nào? Bộ công cụ của VS2017 'v141' là nhị phân tương thích với 'v140' của VS2015 và không có' v (c) 150' mà tôi đã nghe đến. Có lẽ, nhà phát triển của macro CMake đó đã ngoại suy và đoán bộ công cụ cho VS2017. –
@ Torbjörn Đồng ý. Có một VC 15.0, nhưng không có Toolset 15.0 (chưa) và tên tập tin đề cập đến bộ công cụ. Tôi đang sử dụng CMake 3.8.0-rc1. – wally
Nếu bạn đang sử dụng phiên bản CMake <3.8.0 (bao gồm cả phiên bản RC), bạn cần sử dụng 141. Nếu bạn đang sử dụng phiên bản CMake> 3.8.0 bạn cần sử dụng 150. Vấn đề này phải làm với cách Boost thay đổi lược đồ đánh số. – StAlphonzo