Я только что установил обновление для разработчиков Windows 10 (версия 10.0.15063).
У меня есть несколько версий Visual Studio (2012, 2013, 2015 и 2017). Я установил VS 2017 всего пару недель назад.
Проблема
CMake (версия 3.8.1) больше не находит компилятор C/С++ при запуске внутри "VS2015 x64 Native Command Prompt" (он работает нормально, когда запускается в командной строке VS 2017).
Воспроизведение
Содержимое CMakeLists.txt
:
project (test)
add_executable (test test.cpp)
(Содержание test.cpp
не имеет значения.)
Вызов CMake в командной строке VS2015 x64:
> mkdir build
> cd build
> cmake -G "Visual Studio 14 2015 Win64" ..
Выход CMake:
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:1 (project):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:1 (project):
No CMAKE_CXX_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also "D:/dev/cmaketest/build/CMakeFiles/CMakeOutput.log".
See also "D:/dev/cmaketest/build/CMakeFiles/CMakeError.log".
Анализ
Причина отказа очевидна при просмотре CMakeFiles/CMakeError.log
:
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
CMakeCCompilerId.c
Link:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdC.lib" /MACHINE:X64 Debug\CMakeCCompilerId.obj
LINK : fatal error LNK1158: cannot run 'rc.exe' [D:\dev\cmaketest\build\CMakeFiles\3.8.1\CompilerIdC\CompilerIdC.vcxproj]
rc.exe
(Resource Compiler) не найден. Действительно, в той же командной строке VS 2015:
> where rc.exe
INFO: Could not find files for the given pattern(s).
Пока он находится в командной строке VS 2013:
> where rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe
и командной строки VS 2017:
> where rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
Проверка содержимого переменных среды PATH
в различных командах командной строки VS:
-
В командной строке VS 2013
PATH
содержитсяC:\Program Files (x86)\Windows Kits\8.1\bin\x64
-
В командной строке VS 2017
PATH
содержитC:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
-
Но внутри командной строки VS 2015
PATH
содержит толькоC:\Program Files (x86)\Windows Kits\10\bin\x64
который не содержит
rc.exe
.
Вопросы
-
Является ли это известной проблемой или она специфична для моей системы?
-
Может ли Windows 10 Creators Update установить, удалить или изменить систему (возможно, что-то связанное с Windows SDK), которая могла бы вызвать эту проблему?
-
Что такое чистый способ решить эту проблему?
Изменить: Установленные компоненты VS 2017: