本文共 5068 字,大约阅读时间需要 16 分钟。
原文地址:
在使用CMake生成一个VS2013项目时,遇到如下内容的错误信息:
————————————————分割线———————————————————
The C compiler identification is MSVC 18.0.21005.1
The CXX compiler identification is MSVC 18.0.21005.1
Check for working C compiler using: Visual Studio 12 2013
Check for working C compiler using: Visual Studio 12 2013 -- broken
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/CMakeTestCCompiler.cmake:61 (message): The C compiler "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/cl.exe" is not able to compile a simple test program. It fails with the following output: Change Dir: E:/硕士/实验室事务/无人机项目/无人机视觉/目标跟踪/AR Drone2.0开源项目/开发资料/目标跟踪/KCF/kcf-移植/C++版本/SRT(C++)/build/CMakeFiles/CMakeTmp Run Build Command:"C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe" "cmTryCompileExec3720408510.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=12.0" Microsoft(R) 生成引擎版本 12.0.21005.1
[Microsoft .NET Framework 版本 4.0.30319.34209]
版权所有 (C) Microsoft Corporation。保留所有权利。
生成启动时间为 2015/7/24 14:09:11。
节点 1 上的项目“E:\硕士\实验室事务\无人机项目\无人机视觉\目标跟踪\AR Drone2.0开源项目\开发资料\目标跟踪\KCF\kcf-移植\C++版本\SRT(C++)\build\CMakeFiles\CMakeTmp\cmTryCompileExec3720408510.vcxproj”(默认目标)。
PrepareForBuild:
正在创建目录“cmTryCompileExec3720408510.dir\Debug\”。
正在创建目录“E:\??ê?\êμ?éêòê???\?Tè??ú????\?Tè??úêó??\??±ê?ú×ù\AR Drone2.0?a?′????\?a·¢×êá?\??±ê?ú×ù\KCF\kcf-ò??2\C++°?±?\SRT(C++)\build\CMakeFiles\CMakeTmp\Debug\”。
正在创建目录“cmTryCompileExec3720408510.dir\Debug\cmTryCom.7242CB77.tlog\”。
InitializeBuildStatus:
正在创建“cmTryCompileExec3720408510.dir\Debug\cmTryCom.7242CB77.tlog\unsuccessfulbuild”,因为已指定“AlwaysCreate”。
MakeDirsForCl:
正在创建目录“E:\硕士\实验室事务\无人机项目\无人机视觉\目标跟踪\AR Drone2.0开源项目\开发资料\目标跟踪\KCF\kcf-移植\C++版本\SRT(C++)\build\CMakeFiles\CMakeTmp\Debug”。
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /Zi /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"cmTryCompileExec3720408510.dir\Debug\\" /Fd"cmTryCompileExec3720408510.dir\Debug\vc120.pdb" /Gd /TC /analyze- /errorReport:queue "E:\??ê?\êμ?éêòê???\?Tè??ú????\?Tè??úêó??\??±ê?ú×ù\AR Drone2.0?a?′????\?a·¢×êá?\??±ê?ú×ù\KCF\kcf-ò??2\C++°?±?\SRT(C++)\build\CMakeFiles\CMakeTmp\testCCompiler.c"
用于 x86 的 Microsoft (R) C/C++ 优化编译器 18.00.21005.1 版版权所有(C) Microsoft Corporation。 保留所有权利。
cl /c /Zi /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"cmTryCompileExec3720408510.dir\Debug\\" /Fd"cmTryCompileExec3720408510.dir\Debug\vc120.pdb" /Gd /TC /analyze- /errorReport:queue "E:\??ê?\êμ?éêòê???\?Tè??ú????\?Tè??úêó??\??±ê?ú×ù\AR Drone2.0?a?′????\?a·¢×êá?\??±ê?ú×ù\KCF\kcf-ò??2\C++°?±?\SRT(C++)\build\CMakeFiles\CMakeTmp\testCCompiler.c"
testCCompiler.c
c1 : fatal error C1083: 无法打开源文件: “E:\??ê?\êμ?éêòê???\?Tè??ú????\?Tè??úêó??\??±ê?ú×ù\AR Drone2.0?a?′????\?a·¢×êá?\??±ê?ú×ù\KCF\kcf-ò??2\C++°?±?\SRT(C++)\build\CMakeFiles\CMakeTmp\testCCompiler.c”: No such file or directory [E:\硕士\实验室事务\无人机项目\无人机视觉\目标跟踪\AR Drone2.0开源项目\开发资料\目标跟踪\KCF\kcf-移植\C++版本\SRT(C++)\build\CMakeFiles\CMakeTmp\cmTryCompileExec3720408510.vcxproj]
已完成生成项目“E:\硕士\实验室事务\无人机项目\无人机视觉\目标跟踪\AR Drone2.0开源项目\开发资料\目标跟踪\KCF\kcf-移植\C++版本\SRT(C++)\build\CMakeFiles\CMakeTmp\cmTryCompileExec3720408510.vcxproj”(默认目标)的操作 - 失败。
生成失败。
“E:\硕士\实验室事务\无人机项目\无人机视觉\目标跟踪\AR Drone2.0开源项目\开发资料\目标跟踪\KCF\kcf-移植\C++版本\SRT(C++)\build\CMakeFiles\CMakeTmp\cmTryCompileExec3720408510.vcxproj”(默认目标) (1) ->
(ClCompile 目标) ->
c1 : fatal error C1083: 无法打开源文件: “E:\??ê?\êμ?éêòê???\?Tè??ú????\?Tè??úêó??\??±ê?ú×ù\AR Drone2.0?a?′????\?a·¢×êá?\??±ê?ú×ù\KCF\kcf-ò??2\C++°?±?\SRT(C++)\build\CMakeFiles\CMakeTmp\testCCompiler.c”: No such file or directory [E:\硕士\实验室事务\无人机项目\无人机视觉\目标跟踪\AR Drone2.0开源项目\开发资料\目标跟踪\KCF\kcf-移植\C++版本\SRT(C++)\build\CMakeFiles\CMakeTmp\cmTryCompileExec3720408510.vcxproj]
0 个警告
1 个错误
已用时间 00:00:00.44
CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:2 (PROJECT)
Configuring incomplete, errors occurred!
See also "E:/硕士/实验室事务/无人机项目/无人机视觉/目标跟踪/AR Drone2.0开源项目/开发资料/目标跟踪/KCF/kcf-移植/C++版本/SRT(C++)/build/CMakeFiles/CMakeOutput.log".
See also "E:/硕士/实验室事务/无人机项目/无人机视觉/目标跟踪/AR Drone2.0开源项目/开发资料/目标跟踪/KCF/kcf-移植/C++版本/SRT(C++)/build/CMakeFiles/CMakeError.log".
————————————————————————————————华丽的分割线———————————————————————————————————————
上面的信息看起来很杂乱,其实就只有一个错误,开头的时候提示“The C compiler "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/cl.exe" is not able to compile a simple test program.” 这句话意思是说,cl.exe无法编译一个简单的程序,然后cmake继续生成它能生成的内容,到最后快结束的时候,cmake检查发现无法打开testCCompiler.c,出现这个错误的原因是很显然的,因为开头就提示了cl.exe无法编译一个简单的测试程序,testCCompiler.c没有生成,当然就打不开了。笔者一开始也是上网查找该问题的解决办法,发现不少人遇到,但是问题的前提稍有不同,如文章http://blog.csdn/zwlq1314521/article/details/19199613中提到的因为同时装了VS2010和VS2012导致问题,卸载vs2012以及.NET4.5组件解决了问题,然后好多人不管问题的前提是否一样,也去卸载.NET4.5,这样的行为是非常危险的,可能会导致更加严重的后果,就像人生病不对症乱吃药。笔者针对自己的情况进行分析,发现错误提示中有好多乱码,于是想到自己安装的cmake是英文版,是不是对中文文件夹名不支持,然后将项目移到一个英文文件目录下,真的就能生成成功了。由此明白一个道理,有些问题看起来很麻烦,但仔细去分析,也许发现很简单。
转载地址:http://hweab.baihongyu.com/