1. 程式人生 > >[OpenCv]Win10 X64 + VS2015 + CMake3.6.1 靜態編譯OpenCv3.1.0並測試

[OpenCv]Win10 X64 + VS2015 + CMake3.6.1 靜態編譯OpenCv3.1.0並測試

  • 列表內容

一、OpenCv3.1.0配置

二、CMake3.6.1安裝

三、使用CMake3.6.1編譯OpenCv3.1.0

  1. 開啟CMake

    開啟CMake,如圖 1

    這裡寫圖片描述

  2. 選擇 source檔案地址編譯生成的檔案存放地址

    source檔案地址選擇OpenCv解壓檔案中的source檔案,開啟source檔案,我們可以看到裡面的檔案如圖 2,其中CMakeList.txt檔案就是指導CMake編譯的描述檔案,想看懂改描述檔案的同學可以看看CMake入門

    這裡寫圖片描述


    編譯生成的檔案地址選擇了與source上一級同級的資料夾 buildS,該資料夾不存在,但是CMake會幫你建立,選擇好了後如圖 3:

    這裡寫圖片描述

  3. Configure

    點選圖 7左下角Configure按鈕,軟體會自動檢測到電腦安裝有VS2015(注意一定要選對版本),就幫你選定將該Source檔案編譯成VS2015專案,如圖 4;

    這裡寫圖片描述

    我們需要點finish按鈕進行確認,確認之後得到的結果如圖 5:

    這裡寫圖片描述

    此時 buildS 資料夾中已經有生成的檔案了,如圖 6

    這裡寫圖片描述

  4. 個性化設定

    在圖 6中,我們勾選一些我們需要的設定,設定後的結果如圖 7 和 圖 8 所示(這裡說明一下 比如 BUILD_EXAMPLE 我們不知道什麼意思,可以將滑鼠移動到該屬性上面停留一會,就可以看到相應的解釋了);

    BUILD_EXAMPLE checked
    BUILD_opencv_world checked
    BUILD_SHARED_LIBS not checked

    這裡寫圖片描述

    這裡寫圖片描述

  5. 生成

    在生成之前,我們需要在次點選Configure按鈕,使得我們剛剛的設定得以生效,在這一步需要連線外網下載一個ippicv_win的壓縮包,如果在這一步出現問題,可以上網搜尋下載這個檔案,放到相應的資料夾中
    然後我們點選Generate按鈕,開始生成VS專案,生成結束之後,我們可以看到buildS 資料夾中的內容如圖 9所示,和圖 6對比,多了很多VS工程中出現的檔案:

    這裡寫圖片描述

  6. 在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.
    連結器 –> 輸入 –> 附加依賴項,新增如下lib

    IlmImf.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