Сборка с проектом Visual Studio 2017, но _MSC_VER показывает 1900
У меня проблема с проектом, и, возможно, кто-то может дать мне несколько советов. У меня есть проект в решении, которое было создано или обновлено в последний раз с Visual Studio 2015
, Теперь я хочу построить этот проект с Visual Studio 2017
,
Итак, я запускаю командный файл %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat amd64
с параметром. Затем я обновляю проект командой devenv solution.sln /Upgrade
, Я вижу следующий вывод:
Microsoft Visual Studio 2017 Version 15.0.27703.1.
Copyright (C) Microsoft Corp. All rights reserved.
Upgrading project 'project1'...
Configuration 'Debug|Win32': changing Platform Toolset to 'v141' (was 'v140').
Configuration 'Debug|x64': changing Platform Toolset to 'v141' (was 'v140').
Configuration 'Release|Win32': changing Platform Toolset to 'v141' (was 'v140').
Configuration 'Release|x64': changing Platform Toolset to 'v141' (was 'v140').
Migration completed successfully, but some warnings were detected during migration.
For more information, see the migration report:
C:\path\to\project\UpgradeLog.htm
В этом UpgradeLog.htm
Я вижу только это предупреждение:
solution.sln: Visual Studio needs to make non-functional changes to this project in order to enable the project to open in released versions of Visual Studio newer than Visual Studio 2010 SP1 without impacting project behavior.
Затем, когда проект собран, я вижу это сообщение при сборке проекта (я удалил реальное имя проекта, имена исходных файлов и реальные пути здесь. Это не должно быть проблемой):
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\CL.exe /c /Iinclude /IC:\path\to\other\include /Zi /nologo /W3 /WX- /diagnostics:classic /MP /O2 /Ob2 /Ot /Oy- /GL /D WIN64 /D NDEBUG /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Release\x64\\" /Fd"C:\path\to\debug\symbols\debug.pdb" /Gd /TP /FC /errorReport:queue c1.cpp c2.cpp c3.cpp
c1.cpp
c2.cpp
c3.cpp
Unknown compiler version - please run the configure tests and report the results
Unknown compiler version - please run the configure tests and report the results
Unknown compiler version - please run the configure tests and report the results
Lib:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x64\Lib.exe /OUT:"C:\path\to\lib\project.lib" some_other.lib /LIBPATH:C:\path\to\other\lib64 /NOLOGO /MACHINE:X64 /LTCG Release\x64\c1.obj
Release\x64\c2.obj
Release\x64\c3.obj
Но позже, когда я ищу в файле project.lib
за _MSC_VER
с командой find "_MSC_VER" project.lib
Я получаю этот вывод (несколько раз):
/FAILIFMISMATCH:"_MSC_VER=1900"
Но я ожидал получить этот вывод (из-за Visual Studio 2017
):
/FAILIFMISMATCH:"_MSC_VER=1910"
Как это может быть?
1 ответ
/FAILIFMISMATCH:"_MSC_VER=1900"
указывает, что файл был собран с MSVC++ 14.0 (Platform Toolset v140). Так как, согласно журналу обновления, project1
был перенесен в v141, я думаю, что либо:
- он не был восстановлен, и вы ссылаетесь на старые файлы.obj; или же
- сообщения, которые вы видите, поступают из объектных файлов, созданных другими проектами, предназначенными для v140.
Что касается сообщений во время компиляции, я подозреваю, что вы используете библиотеки Boost не позднее 1.62 - вы можете увидеть проверку версии и сообщение в нижней части заголовка visualc.hpp. В этом случае вам нужно будет либо обновить библиотеки Boost, либо изменить набор инструментов платформы обратно на v140.