Ich habe gerade Windows 10 Creators Update (Version 10.0.15063) installiert.
Ich habe mehrere Versionen von Visual Studio installiert (2012, 2013, 2015 und 2017). Ich habe VS 2017 erst vor ein paar Wochen installiert.
Problem
CMake (Version 3.8.1) nicht mehr findet die C / C ++ Compiler , wenn in einem "VS2015 x64 Native Command Prompt" (es laufen tut richtig funktioniert , wenn in einer VS 2017 Eingabeaufforderung).
Reproduktion
Inhalt von CMakeLists.txt
:
project (test)
add_executable (test test.cpp)
(Inhalt von test.cpp
ist irrelevant.)
CMake-Aufruf in einer nativen VS2015 x64-Eingabeaufforderung:
> mkdir build
> cd build
> cmake -G "Visual Studio 14 2015 Win64" ..
CMake-Ausgabe:
-- 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".
Analyse
Der Grund für den Fehler ist klar, wenn man Folgendes betrachtet 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) wurde nicht gefunden. In der gleichen VS 2015-Eingabeaufforderung:
> where rc.exe
INFO: Could not find files for the given pattern(s).
Während es sich in einer VS 2013 Eingabeaufforderung gefunden:
> 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
und eine VS 2017-Eingabeaufforderung:
> where rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
Überprüfen des Inhalts der PATH
Umgebungsvariablen in verschiedenen VS-Befehlsansagen:
PATH
Enthält in einer VS 2013-EingabeaufforderungC:\Program Files (x86)\Windows Kits\8.1\bin\x64
PATH
Enthält in einer VS 2017-EingabeaufforderungC:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
PATH
Enthält jedoch in einer VS 2015-Eingabeaufforderung nurC:\Program Files (x86)\Windows Kits\10\bin\x64
was nicht enthält
rc.exe
.
Fragen
Ist dies ein bekanntes Problem oder ist es spezifisch für mein System?
Was könnte Windows 10 Creators Update möglicherweise im System installieren, deinstallieren oder ändern (möglicherweise etwas im Zusammenhang mit Windows SDKs), das dieses Problem auslösen würde?
Was ist ein sauberer Weg, um dies zu lösen?
Bearbeiten: Installierte VS 2017-Komponenten: