第一次写,就当是自己的踩坑记录了 ,希望能对看到的人有帮助。
由于版本问题,导致不同版本vtk使用不同版本cmake编译可能会出现编译错误,失败了无数次终于是成功了一次。这里用最新版本vtk8.2.0和cmake版本3.10来编译。
VTK下载地址https://vtk.org/download/
cmake下载地址https://cmake.org/download/
QT下载地址http://download.qt.io/archive/qt/,这里用的版本是5.6.0(以下解压安装路径仅供参考)
1、首先安装QT和cmake,添加mingw所在的exe文件路径到系统环境变量PATH(如C:\Qt\Qt5.6.0\Tools\mingw492_32\bin)。
2、解压VTK-8.2.0.zip和VTKData-8.2.0.zip到C:\VTK\VTK-8.2.0下。
3、建立新文件夹VTK-bin作为cmake生成文件的放置地址,同时建立新文件夹releaselib来放置编译安装生成的文件,如图所示
4、启动cmake,指定source code路径为VTK解压路径(此处为C:\VTK\VTK-8.2.0),build the binaries路径为cmake生成文件路径(此处为C:\VTK\VTK-bin)。
5、点击configure,编译器默认为use default nativecompilers,选择mingw makefiles,点击finish,grouped和advanced复选框一定要勾选上。
6、BUILD:BUILD_SHARED_LIBS ->指示编译共享库还是静态库,默认是编译选上的状态,我们要编译共享库,所以保持默认状态;BUILD_EXAMPLES ->指示编译示例工程,可选可不选。
7、CMAKE:CMAKE_INSTALL_PREFIX->VTK完成编译完成之后,安装目录,bin、lib、include等文件会被拷贝到它指定的目录下,x64编译默认安装目录是”C:/ProgramFiles /VTK”,这里我们为了方便把它设置为刚刚建立的文件夹releaselib。
8、Module:因为要在QT中使用VTK,所以勾选上Module_vtkGUISupportQt、Module_vtkGUISupportQtOpenGL、Module_vtkGUISupportQtSQL、Module_vtkGUISupportQtWebkit、Module_vtkRenderingQt、Module_vtkViewsQt。
9、VTK:勾选上VTK_Group_Qt;VTK_DATA_STORE:这里我并没有修改它的路径,而是将VTKData-8.2.0.zip解压后把将其解压文件中MD5文件覆盖二进制目录下\ExternalData\Objects\MD5文件,当然这里也可以修改VTK_DATA_STORE的路径为VTKData-8.2.0.zip解压后的.ExternalData路径。
10、虽然这里添加了,但也有教程说可加可不加。Add Entry:
11、点击Configure,如果出错,将Ungrouped Entries:QT_VTK_VERSION,改变value为5,再次点击Configure,等再无红颜色提示,点击Generate。
12、当Generate done后,通过cmd到C:\VTK\VTK-bin下,使用mingw32-make来编译VTK,大概需要一个小时左右的时间。
13、当编译完成后,使用mingw32-make install可生成使用的头文件和库,生成完成后,找到releaselib下plugins\designer中的libQVTKWidgetPlugin.dll,将其拷贝到QT安装目录下Qt\Qt5.6.0\Tools\QtCreator\bin\plugins\designer和Qt\Qt5.6.0\5.6\mingw49_32\plugins\designer两个目录下,就可以在QT下使用VTK了。
注意(还有两个坑要踩):如需要在QtCreator内集成的Designer中使用QVTKWidget,应把libQVTKWidgetPlugin.dll复制到Qt\Qt5.6.0\Tools\QtCreator\bin\plugins\designe目录。但由于编译生成QtCreator的编译器版本与生成libQVTKWidgetPlugin.dll的版本可能并不兼容,将导致无法正常加载插件。如果无法直接使用libQVTKWidgetPlugin.dll插件,可在Designer中添加普通的QWidget控件后,手动将其提升为QVTKWidget(对应的头文件为QVTKWidget.h,注意在.pro中设置正确的INCLUDEPATH)。
如果运行时程序会异常崩溃,添加
#include “vtkAutoInit.h”
VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built withvtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
使用mingw编译VTK并在qt中使用vtk
最新推荐文章于 2025-07-23 07:00:00 发布