我刚刚安装了Windows 10 Creators Update(版本10.0.15063)。

我安装了多个版本的Visual Studio(2012、2013、2015和2017)。我仅在几周前安装了VS 2017。

问题

在“VS2015 x64 native 命令提示符”中运行时,CMake(版本3.8.1)不再找到C/C++编译器(在VS 2017命令提示符中运行时,它确实可以正常工作)。

再生产
CMakeLists.txt的内容:

project (test)
add_executable (test test.cpp)

(test.cpp的内容无关紧要。)

在VS2015 x64 native 命令提示符中进行CMake调用:

> 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(资源编译器)。确实,在同一个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

在各种VS命令提示符中检查PATH环境变量的内容:
  • 在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组件:

    c++ - VS 2015命令提示中不再存在rc.exe-LMLPHP

    最佳答案

    花了一些时间在安装了Win10 Creators Edition和VS2010,VS2013,VS2015和VS2017的三台计算机上研究此问题,该计算机在两台计算机上均可运行,而在第三台计算机上则无法运行。全部都具有VS2015 Update 3,并且应该都已安装了相同的选项。

    运行以下批处理文件

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat
    

    应该为VS2015 x64环境设置正确的环境。这应该添加
    C:\Program Files (x86)\Windows Kits\10\bin\x64
    

    到路径。这是 rc.exe 所在的位置。但是在我的故障机器上, rc.exe 从这里丢失了,但是它确实存在于
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
    

    我回过头来,觉得这是一个设置问题,我重新运行了VS2015 Update 3设置,并告诉它添加

    Windows和Web开发->通用Windows应用开发工具->工具(1.4.1)和Windows 10 SDK(10.0.14393)

    这导致 rc.exe 和相关文件出现在
    C:\Program Files (x86)\Windows Kits\10\bin\x64
    

    在上运行 rc -v
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
    


    C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
    

    给出了相同的版本号 10.0.10011.16384

    不知道为什么原始安装中缺少rc.exe,但是重新运行安装并添加其他SDK为我修复了它。看起来像
    C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
    

    应该是默认的 rc.exe ,但不是以前的安装程序设置的。

    关于c++ - VS 2015命令提示中不再存在rc.exe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43847542/

    10-10 21:24