1. 程式人生 > >VS2013下QT5.4+VTK7.1.1的編譯

VS2013下QT5.4+VTK7.1.1的編譯

/****************************************************

QT5.4的安裝

**************************************************/

1.首先我們先安裝QT5.4,由於是使用vs2013,這裡我們下載對應版本的QT,這裡我選擇的時36位的版本。

另外為了能夠結合vs2013,我們還要下載vsaddin可以隨便選擇一個進行下載。

2.對QT5.4和vsaddin進行安裝,這裡我先安裝QT,安裝時可以選擇自定義的路徑我選擇的路徑為D:\Qt,即在該目錄下進行安裝,安裝時的元件可以選擇預設。完成安裝後進行環境變數的配置。

由於我選擇的路徑為D:\Qt\,那麼設定QTDIR為該目錄,並在Path中進行配置,注意定位至bin資料夾。

3.之後我們安裝vsaddin,直接安裝即可,然後我們可以開啟vs2013,可以發現在選單中多出了QT5的選項,我們開啟其中的Qt Options,在Qt versions中新增名為msvc2013_opengl的物件,並設定路徑。至此完成Qt5的安裝,這樣我們可以通過Qt5進行編寫,另外在安裝Qt5時,安裝包也為我們裝上了QtCreator,我們也可以用它進行Qt的編寫。

Qt Creator

/************************************************

VTK7.1.1的編譯

************************************************/

2.這裡我現在D盤新建了VTK的資料夾作為編譯的主資料夾,然後在裡面新建5個資料夾,分別為

(1)VTK-bin,此處為VTK進行編譯時的資料夾

(2)VTK-debug,此處用來存放VTK的debug庫版本

(3)VTK-release,此處存放VTKrelease庫版本

(4)VTK-res,作為臨時安裝資料夾

(5)VTK-src,此為VTK原始檔案存放位置,即把下載下來的VTK7.1.1原始碼存放於此

(參考自《VTK 7.0 & QT Creator 5.6  環境配置教程》中科院深圳先進院認知技術中心 CCT 影像教程系列(1) 孫宇

[email protected] 2016.04.27,暫時找不到網址了)

其中的VTKData-7.1.1資料夾為VTK的資料檔案,此處暫不使用。

3.接下來我們使用CMake進行編譯,CMake可以自行進行下載,開啟CMake和VTK-src資料夾,將VTK-src資料夾中的CMakeLists.txt拖至CMake中,其中Where is the source code:為預設,即D:/VTK/VTK-src,Where to build the binaries:選擇VTK-bin資料夾,如圖所示,點選Configure進行專案生成。

這裡我們選擇Visual Studio 12 2013來生成專案

3.經過一段較長的時間CMake顯示如下,我們可以勾選Group和Advanced

在BUILD中可以勾選BUILD_EXAMPLES和BUILD_SHARED_LIBS

在CMAKE-CMAKE_INSTALL_PREFIX中設定為VTK-res資料夾

在VTK中勾選VTK_Group_Qt

在VTK_RENDERING_BACKEND中選擇為OpenGL,否則用Qt Creator進行編寫時新增初始化巨集會出錯(參考自孫宇的VTK 7.0 & QT Creator 5.6  環境配置教程)

然後繼續點選Configure。

4.此時會出現錯誤,我們將VTK_QT_VERSION的版本修改為5

將QT_QMAKE_EXECUTABLE的目錄修改為Qt目錄下bin/qmake.exe,若是Qt環境變數配置正確,此處會自動填寫,再次點選Configure。

5.若是Qt環境變數配置正確,應該不會出錯,如果還有問題,看是否是Qt5_DIR路徑問題,並進行改正。

6.接著我們點選Add Entry,設定Name:為CMAKE_DEBUG_POSTFIX,Type:為STRING,Value為d,Description可為空,如下圖所示,這是為了讓debug版本編譯出二進位制檔案帶有後綴d,以便和release版本編譯出的二進位制檔案相區分,強烈建議這麼做。(參考自https://wenku.baidu.com/view/749528a433687e21ae45a9bb),再次點選Configure。

7.之後應該不再有錯誤,可以點選Generate進行專案生成,此時在VTK-bin中會生成相應的專案檔案,如下圖所示

8.之後找到構建目錄下的\GUISupport\Qt\PluginInstall.cmake檔案,開啟它,把第五行:把

SET(VTK_INSTALL_QT_PLUGIN_FILE "QVTKWidgetPlugin.dll")

修改為

IF(BUILD_TYPE MATCHES Debug)    SET(VTK_INSTALL_QT_PLUGIN_FILE "QVTKWidgetPlugind.dll") ELSE()   SET(VTK_INSTALL_QT_PLUGIN_FILE "QVTKWidgetPlugin.dll")  ENDIF()

如圖所示

不修改,debug下install報錯,但如果你能理解編譯過程,並看懂錯誤,這個錯誤其實沒什麼大不了。同樣是為了區別D版和R版後面的d的問題。

當出現無法儲存的情況下,點選取消,在彈出的框中的編碼改為Unicode,如圖所示,即可,若沒有此狀況可直接儲存。最後應儲存為cmake型別檔案,而非txt檔案。

9.以管理員身份開啟vs2013,開啟VTK-bin資料夾下的VTK.sln(務必以管理員身份執行vs,在vs中開啟sln),否則後面安裝時會出錯,可能因為沒有許可權而無法匯出編譯的庫。我們先生成ALL_BUILD在win32下Debug的生成,生成過程較長,請耐心等待。

由於本人在後續編譯過程中出現了一些庫檔案無法訪問的錯誤,想到可能是PluginInstall.cmake檔案許可權的問題,這裡在該檔案的屬性安全中將完全控制進行勾選。

10.最後完成debug下的編譯,在對CMakePredefinedTargets分支下的INSTALL進行編譯,可以選擇右鍵INSTALL,僅用於專案-僅生成INSTALL,編譯的庫都會拷貝至 VTK-res 目錄下

結果在INSTALL過程中出錯了,報

if %errorlevel% neq 0 goto :cmEnd  :cmEnd  endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone  :cmErrorLevel  exit /b %1  :cmDone  if %errorlevel% neq 0 goto :VCEnd 

再次INSTALL生成成功。

11.然後將VTK-res資料夾中生成的檔案剪下至VTK-debug資料夾下,此為debug版本的VTK檔案,按理說應該會生成一個plugins的資料夾用來存放 QVTKWidgetPlugin.dll 外掛,用於嵌入vs的qtdesigner中,不知道為什麼沒有。

12.開始release版本的編譯生成,步驟與debug一致。完成後剪下至VTK-release資料夾。

13.因為沒有 QVTKWidgetPlugin.dll 外掛,我們到D:\VTK\VTK-bin\bin\Release下找到QVTKWidgetPlugin.dll,到D:\VTK\VTK-bin\lib\Release找到QVTKWidgetPlugin.exp和QVTKWidgetPlugin.lib,都放入Qt的plugins下的designer資料夾下,我的位置是D:\Qt\Qt5.4.2\5.4\msvc2013_opengl\plugins\designer如下圖所示

14.此時用vs2013新建一個Qt工程,開啟其中的ui檔案後可以在designer中可以看到QVTKWidget的控制元件了,在左下角。

15.在環境變數Path中新增VTK的路徑debug和release版本只能新增一個,比如我新增的是D:\VTK\VTK-debug\bin路徑至Path

16.我們可以找一個excample進行測試,在VTK.sln點開隨機的例子進行效果展示,如圖