VTK学习-源码编译

VTK的源代码编译是学习和使用VTK必须掌握而且会第一个接触到的技能,因为每个VTK的开发者都有可能实在不同的环境下使用。这里的环境包括使用的IDE,使用的操作系统,使用的是x86还是x64机器等等。熟练的完成VTK的源代码编译能快速的编译出我们所要求的平台环境下的库,供我们开发使用。

前言

对于VTK的编译,我也折腾了一些时间。其中的问题常常不是编译的知识匮乏导致的,而是对于一些我们所要求环境下的VTK的配置,源代码本身的问题等原因。所以不懂编译原理等底层知识没有问题。

我这次编译VTK所使用的环境概括为:

  • 使用目标:在Windows下使用Qt作为IDE,使用MinGW作为C++编译器,使用VTK作为第三方库,开发32位的桌面软件。
  • 操作系统:Windows7(10) 64位
  • 安装Qt:qt-opensource-windows-x86-mingw491_opengl-5.4.2
  • 安装Cmake:Cmake 4.9.3
  • 下载VTK源代码:VTK6.3.0.zip

这里说明下,为什么选择这样的环境,除了cmake都不是最新版本。这主要是因为,我当前的项目用的一直都是qt5.4,而且是mingw作为编译器,VTK选择6.3版本,是因为发现在这个环境要求下,最新的VTK8.0.1无法成功编译,存在很多问题,这些问题我认为不是个人问题,而是VTK的源代码的问题,存在什么问题,将在最后简要说明。下面开始编译。

编译VTK

  1. 创建文件目录:D:\WorkSpace\VTK\VTK-6.3.0(源代码目录);D:\WorkSpace\VTK\VTK6.3.0-qt5.4.2-mingw491-x86-release(构建目录)
  2. 设置环境变量:D:\Qt\Qt5.4.2\5.4\mingw491_32\bin(Qt路径);D:\Qt\Qt5.4.2\Tools\mingw491_32\bin(Mingw路径)
  3. 打开Cmake GUI
  4. 设置路径:设置source code路径为D:\WorkSpace\VTK\VTK-6.3.0;设置build the binaries路径为D:\WorkSpace\VTK\VTK6.3.0-qt5.4.2-mingw491-x86-release
  5. 执行Configure
  6. 弹出对话框,选择MinGW Makefiles和Use default native complier
  7. 选中Grouped和Advanced复选框
  8. 在VTK下选中VTK_Group_Qt
  9. 在Module下选中Module_vtkGUISupportQt、Module_vtkGUISupportQtOpengGL、Module_vtkGUISupportQtSQL、Module_vtkGUISupportQtWebkit
  10. 在CMAKE下设置CMAKE_BUILD_TYPE为Release
  11. 在BUILD下不勾选BUILD_EXAMPLES,不勾选BUILD_TESTING
  12. 执行Configure
  13. 会出现”Found unsuitable Qt version “5.4.2” from …..” 错误,在出现的红色部分找到VTK_QT_VWESION把4改为5
  14. 执行Configure
  15. 继续执行Configure,直到没有红色条目
  16. 执行Generate
  17. 打开Qt安装目录下的Qt 5.4 for Desktop (MinGW 4.9 32bit)控制台程序
  18. 执行cd D:\WorkSpace\VTK\VTK6.3.0-qt5.4.2-mingw491-x86-release,进入前面创建的构建目录
  19. 输入 mingw32-make,回车
  20. 等待到100%
  21. 执行mingw32-make install
  22. 完成后,整个编译生成的dll和对应头文件等都在C:\Program Files (x86)\VTK目录下

编译步骤说明

创建的构建目录其实是Cmake通过cmakelist文件生成的对应的项目文件,如果是vs的编译器,则会创建vs工程,如果是mingw,则会创建对应的makefile。

步骤9中出现的错误,其实是VTK默认的Qt的版本为qt4,设置为5后,则将Qt的版本设置为Qt5.X

如果勾选BUILD_TESTING,则会编译测试模块,然后有可能会在编译过程中下载测试数据。很慢而且。

如果在最后的install过程中出现建立某个目录失败的话,是因为没有管理员权限,这可能在win10下发生,运行qt的那个控制台程序的话,需要以管理员身份运行。

VS环境下的编译

VS下的话,问题会少得多。用最新的VTK和vs2015的话的会轻松编译通过。步骤也基本相同,只是在第6步的时候选择你所使用的vs版本。

VTK8.0在Qt+MinGW下编译

首先我没有编译成功,很多问题在vtk的gitlab上有对应的issue。这说明有很多共同的问题存在。

祝你编译成功。

发表评论

电子邮件地址不会被公开。 必填项已用*标注