VTK简明教程

编译与安装

Qt5(MinGW)使用 CMake 编译与使用 VTK6

本文使用的各软件版本

  • Qt:5.4.0
  • MinGW:4.9.1
  • CMake:3.1.1
  • VTK:6.1.0

各软件下载地址

编译VTK

安装 Qt (安装过程中注意勾选安装MinGW)与 CMake ,并添加与 Qt 集成安装的 MinGW 可执行程序路径( Qt***/Tools/mingw***/bin,即 mingw32-make.exe 所在路径)到系统环境变量 PATH。 解压 VTK,建议解压后路径不要包含中文与空格。

打开 VTK 目录下的 CMakeLists.txt 文件,在约第219行,将 set(VTK_USE_WIN32_THREADS 1) 修改为 set(VTK_USE_PTHREADS 1) ,该处原始上下文为:

include(FindThreads)
set(VTK_USE_WIN32_THREADS 0)
set(VTK_USE_PTHREADS 0)
set(VTK_HP_PTHREADS 0)
set(VTK_USE_SPROC 0)
if(CMAKE_USE_WIN32_THREADS_INIT)
  set(VTK_USE_WIN32_THREADS 1)
  set(CMAKE_THREAD_LIBS_INIT "")
elseif(CMAKE_USE_PTHREADS_INIT)
  set(VTK_USE_PTHREADS 1)
  if(CMAKE_HP_PTHREADS_INIT)
    set(VTK_HP_PTHREADS 1)
  endif()
elseif(CMAKE_USE_SPROC_INIT)
  set(VTK_USE_SPROC 1)
endif()

打开 VTK目录/ThirdParty/libxml2/vtklibxml2/threads.c,在文件开头 #include "libxml.h" 后添加行: #undef HAVE_WIN32_THREADS ,修改后上下文为:

#define IN_LIBXML
#include "libxml.h"
#undef HAVE_WIN32_THREADS
#include <string.h>

启动 CMake,并指定源代码路径和生成路径:

指定源代码与生成路径

配置生成器为 MinGW:

配置生成器

点击 CMake 中的 Configure 进行第一次配置,配置完成后,勾选 Search 框后的 GroupedAdvanced

CMAKE 下设置 CMAKE_INSTALL_PREFIX 为编译完成后 VTK 期望的安装路径,如 D:/VTK-6.1.0/MinGW

Module 下勾选 Module_vtkGUISupportQtModule_vtkGUISupportQtOpenGLModule_vtkGUISupportQtSQLModule_vtkGUISupportQtWebkitModule_vtkRenderingQtModule_vtkViewsQt

VTK 下勾选 VTK_Group_Qt

如果需要编译为静态链接库,在 BUILD 下取消勾选 BUILD_SHARED_LIBS(如编译为静态链接库,使用时可能会遇到 lib 文件循环依赖问题)。

如果需要编译为 Release,在 CMAKE 下修改 CMAKE_BUILD_TYPERelease

如果需要在 Debug 模式下编译生成的库文件带 d 后缀,点击 Add Entry,手动添加后缀项, NameCMAKE_DEBUG_POSTFIXTypeSTRINGValued

点击 Add Entry,手动添加 qmake 所在路径, NameQT_QMAKE_EXECUTABLETypePATHValueqmake.exe 所在完整路径:

设置QT_QMAKE_EXECUTABLE

点击 Add Entry,手动添加 Qt 安装目录, NameCMAKE_PREFIX_PATHTypePATHValue 为 Qt 安装目录(应为包含 qmake.exebin 的父目录,可对照上下两图):

设置CMAKE_PREFIX_PATH

再次点击 Configure

此时将弹出错误:

Qt版本配置错误

Ungrouped Entries 下将 QT_VTK_VERSION 修改为 5,再次点击 Configure

此时在界面下方的消息输出窗口中,将输出 Configuring done,点击 Generate

生成完成后,将输出 Generating done

在最开始在CMake中指定的生成路径中打开命令行窗口,输入 mingw32-make,开始编译生成:

开始编辑生成

编译完成后,执行 mingw32-make install,将编译生成文件输出到已配置的 CMAKE_INSTALL_PREFIX 目录中,此时该目录中将有 binincludelibpluginsshare 文件夹。

如果在添加了 d 后缀进行编译后执行 mingw32-make install 时,提示 libQVTKWidgetPlugin.dll 文件复制错误,可手动修改 生成目录/GUISupport/Qt/PluginInstall.cmake 文件,将其中的 libQVTKWidgetPlugin.dll 修改为 libQVTKWidgetPlugind.dll

参考

  1. http://www.vtk.org/Wiki/VTK/Configure_and_Build
  2. http://vtk.1045678.n5.nabble.com/vtk-users-VTK-6-0-Compile-issue-with-MinGW64-on-Windows-7-x64-td5724152.html#a5726939