[OpenCv]Win10 X64 + VS2015 + CMake3.6.1 靜態編譯OpenCv3.1.0並測試
- 列表內容
一、OpenCv3.1.0配置
二、CMake3.6.1安裝
三、使用CMake3.6.1編譯OpenCv3.1.0
- 開啟CMake
開啟CMake,如圖 1
選擇 source檔案地址 和 編譯生成的檔案存放地址
source檔案地址選擇OpenCv解壓檔案中的source檔案,開啟source檔案,我們可以看到裡面的檔案如圖 2,其中CMakeList.txt檔案就是指導CMake編譯的描述檔案,想看懂改描述檔案的同學可以看看CMake入門:
編譯生成的檔案地址選擇了與source上一級同級的資料夾 buildS,該資料夾不存在,但是CMake會幫你建立,選擇好了後如圖 3:
Configure
點選圖 7左下角Configure按鈕,軟體會自動檢測到電腦安裝有VS2015(注意一定要選對版本),就幫你選定將該Source檔案編譯成VS2015專案,如圖 4;
我們需要點finish按鈕進行確認,確認之後得到的結果如圖 5:
此時 buildS 資料夾中已經有生成的檔案了,如圖 6
個性化設定
在圖 6中,我們勾選一些我們需要的設定,設定後的結果如圖 7 和 圖 8 所示(這裡說明一下 比如 BUILD_EXAMPLE 我們不知道什麼意思,可以將滑鼠移動到該屬性上面停留一會,就可以看到相應的解釋了);BUILD_EXAMPLE checked
BUILD_opencv_world checked
BUILD_SHARED_LIBS not checked
生成
在生成之前,我們需要在次點選Configure按鈕,使得我們剛剛的設定得以生效,在這一步需要連線外網下載一個ippicv_win的壓縮包,如果在這一步出現問題,可以上網搜尋下載這個檔案,放到相應的資料夾中;
然後我們點選Generate按鈕,開始生成VS專案,生成結束之後,我們可以看到buildS 資料夾中的內容如圖 9所示,和圖 6對比,多了很多VS工程中出現的檔案:
- 在VS2015中生成dll和lib檔案
在VS2015中開啟圖 9中的 OpenCv.sln,點選生成-->批生成,如圖 10選擇:
點選Generate按鈕,開始生成,生成過程如圖 11,等待時間根據電腦配置,30--60min不等:
四、使用自己靜態編譯好的OpenCv lib,釋出可以脫離OpenCv環境執行的exe檔案
刪除環境變數
由於我們需要釋出可以脫離OpenCv 和 VS 2015環境的exe 可執行檔案,為了證明我們編譯產生的exe是可以獨立執行的,我們要把之前配置的有關OpenCv的環境變數刪除;Vs 2015中建立一個空的 Win32控制檯程式
在這個程式中,在原始檔中新增一個drawing.cpp,可以在
DOWNLOAD|drawing.cpp中下載;在屬性管理器中設定Release屬性
在Release|64X 中設定新建一個props檔案,(名為openCv310Rel64)(名字自己取,但是最好能夠把其對應的資訊展示在名稱當中),這樣的好處是在之後建立其它的OpenCv工程之後,直接將這個props檔案匯入到根目錄,並新增到工程中就可以配置好OpenCv的庫了;如圖 12 (這裡由於我們只是建立了這個props檔案,但是沒有對其中的屬性進行設定,所以這裡程式中會報錯)
對自己建立的props檔案進行配置相應的屬性
a.
C/C++–> 常規 –> 附加包目錄,新增如下圖 13目錄,根據自己的路徑相應改一下:C:\OpenCv\buildS\install\include
C:\OpenCv\buildS\install\include\opencv
C:\OpenCv\buildS\install\include\opencv2
b.
C/C++–> 程式碼生成 –> 執行庫,設定為 多執行緒(/MT),
說明 多執行緒(/MT)的意義:使得程式其連線的是libcmt.lib,該檔案屬於C語言執行時庫,整個lib都會連線到PE檔案當中;
把對應的執行時庫直接放到編譯出來的exe檔案當中,是的該程式可以在沒有對應環境的電腦上執行;
c.
連結器 –> 常規 –> 附件庫目錄,設定的目錄入下:C:\OpenCv\buildS\install\x64\vc14\staticlib
這一設定的意義在於,告訴VS編譯時,需要加入到exe檔案中的lib應當去哪裡找,設定如圖
d.
連結器 –> 輸入 –> 附加依賴項,新增如下libIlmImf.lib
ippicvmt.lib
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
libwebp.lib
opencv_ts310.lib
opencv_world310.lib
zlib.lib如圖
e.
除錯生成exe檔案,如果有生成的exe檔案在其它沒有設定OpenCv環境和VS環境的電腦上執行,那麼就代表靜態編譯設定成功。點選下載編譯好的exe檔案
備註
- 如有錯誤,歡迎指正
- 如需交流,請私信新浪微博@IT技術N