在使用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.net/zwlq1314521/article/details/19199613中提到的因爲同時裝了VS2010和VS2012導致問題,卸載vs2012以及.NET4.5組件解決了問題,然後好多人不管問題的前提是否一樣,也去卸載.NET4.5,這樣的行爲是非常危險的,可能會導致更加嚴重的後果,就像人生病不對症亂吃藥。筆者針對自己的情況進行分析,發現錯誤提示中有好多亂碼,於是想到自己安裝的cmake是英文版,是不是對中文文件夾名不支持,然後將項目移到一個英文文件目錄下,真的就能生成成功了。由此明白一個道理,有些問題看起來很麻煩,但仔細去分析,也許發現很簡單。