1. 程式人生 > >vtk6.1.0+qt5.3.2+cmake2.8.12.2+win7+64位安裝配置過程

vtk6.1.0+qt5.3.2+cmake2.8.12.2+win7+64位安裝配置過程

系統win7 64位,已裝vs2012,所有軟體安裝及開啟都用管理員身份

下面詳細介紹QT和VTK結合開發的環境配置步驟

1.      下載軟體版本及地址

①      qt的安裝檔案qt-opensource-windows-x86-msvc2012_opengl-5.3.2.exe

②      qt的vs2012外掛qt-vs-addin-1.2.3-opensource.exe

③      cmake-2.8.12.2-win32-x86.rar

④      VTK-6.1.0.zip

⑤      VTKData-6.1.0.zip

2.      安裝qt

分別執行上面的①②後,新增系統路徑。

變數名:PATH

變數值:D:\Qt\Qt5.3.2\5.3\msvc2012_opengl\bin

(qt安裝在D:\Qt\Qt5.3.2目錄,qt外掛安裝在D:\Qt目錄)

 

開啟VS2012,選擇選單->qt5->qt options->qt versions->add,在path中填入qmake.exe的上級目錄,(我的qmake.exe在D:\Qt\Qt5.3.2\5.3\msvc2012_opengl\bin,所以填入的目錄是D:\Qt\Qt5.3.2\5.3\msvc2012_opengl)。

至此你就可以在VS2012中建立qt專案了。

下面開始配置VTK。

3.      把④⑤解壓到D:\VTK6下,④改名為VTKSource,⑤改名為VTKData

解壓③後安裝cmake,我的安裝路徑是在D:\VTK6\CMake 2.8

(1)       開啟cmake-gui.exe

在sourcecode和build裡面分別填上剛才的原始檔及要放在編譯檔案的路徑。點選Configure,選擇visual studio 11,(雖然是64位系統,但是有教程建議不要選visual studio 11 win64,我沒有試過選了會怎麼樣)。


等待配置完成後,會有錯誤發生,需要做如下修改:

build_shared_libs 勾選

點選addentry,新增qt的安裝路徑


vtk_group_qt 勾選

再次點選configure,完成後再做如下修改

vtk_qt_version改成5,確認QT_QMAKE_EXECUTABLE為你的qmake.exe的地址,再次configure,沒有錯誤後點擊Generate,生成專案檔案。

(2)          在你的編譯檔案路徑下(D:\VTK6\VTKBin2)找到VTK.sln,以管理員方式開啟,準備兩次編譯:

A.release版本編譯


選擇生成解決方案即可,完成後可能會有SAFESEH錯誤,只要找到相關專案,在連結->命令列中加入/safeseh:no,然後再次生成解決方案。

B.debug版本編譯

和release編譯步驟相同。

待完成後,把release中的QVTKWidgetPlugin.lib,QVTKWidgetPlugin.dll拷貝到D:\Qt\Qt5.3.2\5.3\msvc2012_opengl\plugins\designer下,然後開啟qt designer就可以看到qvtk選項了。

 

(3)上面的步驟只是將下載下來的VTK原始碼在windows的平臺上生成了相當於setup檔案,就是install工程,還需要在編譯 install工程才能在cmake時候的變數CMAKE_INSTALL_PREFIX下生成安裝檔案,(在前面編譯的時候INSTALL工程都是skip的,沒有編譯),在visual studio 中的solution中找到INSTALL,點選BUILD ONLY PROJECTbuild安裝,如下圖


這樣就會在C:\Program Files(x86)\VTK下生成如下檔案:


表示vtk安裝成功。

(4)新增系統路徑

PATH=C:\ProgramFiles (x86)\VTK\bin

QTDIR=D:\Qt\Qt5.3.2\5.3\msvc2012_opengl

以上就完成了所以的配置,下面舉例如何建立自己的專案

1.      開啟vs2012,建立新專案,選擇Qt Application


(2)在main.cpp中新增如下程式碼

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
//#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)A
#include "aa.h"//改成你自己專案的標頭檔案
#include<QtWidgets/QApplication>
#include<vtkSmartPointer.h>
#include<vtkSphereSource.h>
#include<vtkPolyDataMapper.h>
#include<vtkActor.h>
#include<vtkImageViewer.h>
#include<vtkRenderWindowInteractor.h>
#include<vtkInteractorStyleImage.h>
#include<vtkJPEGReader.h>
#include<vtkRenderer.h>
#include<QVTKWidget.h>
 
int main(int argc,char **argv)
{
     QApplication app(argc,argv);
     QVTKWidget widget;
     widget.resize(256,256);
     vtkSmartPointer<vtkSphereSource>sphereSource=vtkSmartPointer<vtkSphereSource>::New();
     sphereSource->Update();
     vtkSmartPointer<vtkPolyDataMapper>sphereMapper=vtkSmartPointer<vtkPolyDataMapper>::New();
     sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
     vtkSmartPointer<vtkActor>sphereActor= vtkSmartPointer<vtkActor>::New();
     sphereActor->SetMapper(sphereMapper);
     vtkSmartPointer<vtkRenderWindow>renderWindow=vtkSmartPointer<vtkRenderWindow>::New();
     vtkSmartPointer<vtkRenderer>renderer=vtkSmartPointer<vtkRenderer>::New();
     renderWindow->AddRenderer(renderer);
     renderer->AddActor(sphereActor);
     renderer->ResetCamera();
     widget.SetRenderWindow(renderWindow);
     widget.show();
     app.exec();
     return EXIT_SUCCESS;
}

新增包含目錄及所有的庫檔案。最終結果如下。