CMake生成VS2013項目失敗的解決辦法

在使用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是英文版,是不是對中文文件夾名不支持,然後將項目移到一個英文文件目錄下,真的就能生成成功了。由此明白一個道理,有些問題看起來很麻煩,但仔細去分析,也許發現很簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章