我刚刚安装了Windows 10 Creators (10.0.15063版)。
我安装了多个版本的Visual (2012、2013、2015和2017)。就在几周前,我安装了VS 2017。
问题
CMake (3.8.1版)在"VS2015 x64本机命令提示符“中运行时不再找到C/C++编译器(当在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 )。实际上,在相同的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
环境变量的内容:
PATH
包含
C:\程序文件(x86)\Windows \8.1\bin\x64PATH
包含
C:\程序文件(x86)\Windows \10\bin\x64 C:\Program (x86)\Windows \10\bin\10.0.15063.0\x64PATH
只包含
C:\程序文件(x86)\Windows \10\bin\x64
它不包含rc.exe
。问题
编辑:已安装VS 2017组件:
发布于 2017-07-26 06:31:31
花了一段时间在安装了Win10 Creators和VS2010、VS2013、VS2015和VS2017的三台机器上,它们在两台机器上工作,在第三台机器上失败。它们都有VS2015更新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更新3安装程序,并告诉它添加
Windows和Web ->通用(1.4.1)和Windows10SDK (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,但它不是由以前的安装设置的。
发布于 2017-05-09 18:57:04
肯定不仅仅是你。我昨天安装了VS2017,这样做似乎在我的头上产生了同样的问题。我没有一个好的解决方案(这应该作为一个bug向微软报告),但我确实有一个棘手的解决办法。
我能够复制rc.exe和rc.dll
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
to
C:\Program Files (x86)\Windows Kits\10\bin\x86
为我解决了这个问题。我的直觉是,这是一个注册表项被覆盖,但我还没有充分挖掘它,以确定。
发布于 2017-09-19 09:28:16
在Windows 10 15063.608中遇到了同样的问题(WindowsSDK10.0.15063.0)。适合我的解决方案是为Windows10kit二进制文件创建硬链接、创建x64和x86文件夹,如下所示(使用具有管理权限的命令提示符):
mklink /J "C:\Program Files (x86)\Windows Kits\10\bin\x86" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86"
mklink /J "C:\Program Files (x86)\Windows Kits\10\bin\x64" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64"
(在运行这些命令之前,只需重命名现有的Windows Kits\10\bin\x64
和Windows Kits\10\bin\x86
文件夹--看起来它们没有在使用。
P.S. mklink
是一个CMD
命令,在PowerShell
下不可用
https://stackoverflow.com/questions/43847542
复制相似问题