vs2017怎麼用內置CMAKE編譯opencv??

現在VS2017RC已經內置cmake支持了,我想用它編譯opencv,怎麼改啊各位大哥!!!!

因為cmake的GUI沒法自動檢測VS2017RC啊,我手賤刪了VS2015,感覺自己要崩了

------------------------------------------------------------------------------------------------------------------------------

我仔細看了一下,cmake是能夠自動尋路vs2017的,並且在這個目錄下面也存在著編譯器cl.exe

以下是錯誤報告,我把最關鍵的那一行摘出來了

ClCompile:

C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.10.24728inHostX86x64CL.exe /c /nologo /W0 /WX- /diagnostics:classic /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug" /Fd"Debugvc141.pdb" /Gd /TP /errorReport:queue CMakeCXXCompilerId.cpp

那沒有辦法生CMKAE對應的編譯器文件,返回queue錯誤,而此時,對於沒有學過CMAKE的我一臉懵逼,我只希望有個CMAKE大神能告訴,因為我確實進入那個目錄去看了,CL.EXE時存在的,而我也運行過VS2017的C++程序,表明cl.exe文件是沒問題的!!

------------------------------------------------------------------------------------------------------------------------

問題雖然是我自己解決了,但我還是裝回了VS2015!!

因為python3.6的很多包都指定VC14編譯才可以,而MS提供的VC build tools離線安裝包就是個垃圾,完全沒有辦法安裝,老子只能下載整個VS2015重新裝了


這個事情很可能和我之前給cmake提的一個問題有關CMake 3.7.0 build VS 14 when generator is VS15 (#16436) · Issues · CMake / CMake

我的評論是,如果沒有安裝Win 8.1 SDK,就會出現找不到編譯器的情況,現象就是CMakeCXXCompilerId.cpp編譯失敗。本來打算報一個bug,但發現復現條件非常反常規,並不是cmake的問題,就放棄了。

這裡說說復現的條件。

1. 裝的Windows是Insider

2. 只裝VS2017和Win10 RS1的SDK,不裝Win8.x的

3. 升級Windows的insider版本

CMake找Win SDK的方法是,先到註冊表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows KitsInstalled Roots(或者HKEY_CURRENT_USER)下面找KitsRoot10,把所有安裝了的SDK版本都拿出來,跟系統的SDK版本比,如果找到一樣的,就用一樣版本的SDK,否則取版本號最大的一個。然而在升級的時候,不知道什麼原因破壞了這個註冊表項,CMake找不到10+的版本,就退回8.x的。但你如果沒裝8.x的,VS編譯那個工程就會失敗。

我沒有具體跟進去,不知道到底是那個地方出問題使得CMake找不到SDK。但現象就是這樣的,一升級就掛。


CMake support in Visual Studio – the Visual Studio 2017 RC update我就隨便一搜

另外

cmake本身是支持生成vs2017工程的,就算你不會用vs直接編譯,也可以用cmake生成工程之後打開


現在只要升級cmake就好了


好了,問題已經解決了~~我只安裝了C++桌面編程,然後大家把三個WIN8 SDK都勾上,你沒有聽錯,一定要勾上WIN8所有版本的SDK,是所有版本的SDK!!!謝謝

CMAKEGUI就可以正常編譯了


同樣的問題,我用的是cmake-gui,編譯選項選擇的是Visual Studio 15 2017,不是後面添加x64的選項,編譯的時候出現同樣的錯誤,然後刪除了緩存,選擇Visual Studio 15 2017 x64,configure的時候出現python的語法警告,然後沒管它,這次生成的解決方案,可以用Visual Studio 2017 順利編譯。


升級cmake到最新版本就支持vs2017了


推薦閱讀:

解決 Windows 下 Python 安裝 Dlib 的問題:Cmake 找不到 boost
macOS Sierra10.12.6下安裝OpenCV3.3.0

TAG:OpenCV | MicrosoftVisualStudio | 編譯原理 | 編譯器 | CMake |