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

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

QT5.4的安裝

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

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

http://download.qt.io/archive/qt/5.4/5.4.2/

另外爲了能夠結合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的編譯

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

1.首先對VTK7.1.1的源碼進行下載https://www.vtk.org/download/

 

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文件夾

INSTALL中的路徑也要一一設置

在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的問題。

 

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

 

 

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右鍵屬性中的配置屬性-生成事件-後期生成事件中將在生成中使用改爲否(參考自https://blog.csdn.net/yzheately/article/details/50887512),這是因爲在進行第8步是直接複製粘貼導致的,如果直接輸入不會出現這一問題。

再次INSTALL生成成功。

 

11.然後將VTK-res文件夾中生成的文件剪切至VTK-debug文件夾下,此爲debug版本的VTK文件,

 

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

 

13.一般情況下我們將獲得完整的VTK文件,但是當修改PluginInstall.cmake時出現格式錯誤時,可能不會生成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如下圖所示。

(參考自https://blog.csdn.net/annabelle1130/article/details/78597078

如果一切順利,直接將VTK-debug\plugins\designer中的QVTKWidgetPlugin.dll複製到QT的plugins\designer下用以在Qt designer中嵌入VTK的控件。

這是正常情況下plugins中的QVTKWidgetPlugin.dll文件

粘貼至此

 

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

 

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

 

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

 

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