如何编译VTK

18.05.2008     

 

 

 

一、简要介绍
VTK(Visualization Toolkit)
是一款用于二次开发的可视化工具包,在世界上同类产品中最有影响,基本上可以作为可视化领域的规范。
VTK
的历史和现状:
1993
12月,GEWill Schroeder, Ken Martin两个人写了一本书: The Visualization Toolkit: An Object-Oriented Approach to 3D GraphicsVTK作为这本书的配套软件赠送。由于VTK的出色表现,人们对软件的关注程度远远超过了书,没有几年时间VTK就拥有了巨大的用户群。VTK现在是由kitware公司维护,以开源的形式开发,全世界所有的人都可以加入到开发者的行列。现在VTK的稳定版本是5.0nightly 版本每天都会有更新。
VTK
的特点:Open Source。采用CVS版本控制跨平台。支持WindowsUnixLinuxMac等多种平台功能强大。适合几乎所有的可视化领域,从医学可视化到数据可视化,都能找到VTK的用户支持多种语言开发。c语言当然不用说了,还包括脚本语言,如TCLPython,也支持Java具有强大的开发团队。包括多家开发单位,具有商业化的维护,具有来自全世界使用者的智力资源:)
二、安装前的准备
因为VTK是开源的,我们能从官方网站上得到它的源码,又因为它是跨平台的,我们就要对源码进行一些包装,才能被gcc vc6.0等不同编译器所接受。VTK使用的跨平台工具是CMake,它也是kitware公司的产品,可以从官方主页上获取。

很多人不清楚cmake到底是干什么的,我这里想解释解释。我们下载的vtk源码都是用c++编写的,是一个大的工程,无论在什么平台,用什么编译器,你都要告诉编译器该如何去编译这么一个庞然大物。工程文件是工程的一般组织形式,比如vc6.0下面是dsw文件,gcc下可以把makefile看成这么一个东西。这些工程体系告诉编译器该干什么,需要什么样的参数等,好,cmake就是这样一个用来生成适合不同编译器所需要的工程文件的工具。 cmake为什么知道那些编译参数呢,这不得不提CMakeList.txt这个文件,正是这个文件,提供了这些信息,换句话说,如果没有CMakeList.txt,我们就不能使用cmake。有人又会问,如果不用cmake,可以编译vtk吗?那当然可以,比如在vc中,可以建立一个新的工程,把文件一个个往里面添加,编译选项也要自己加,在linux下,就自己写makefile,当然,这个方法几乎是无法实现的,就算实现,在今后的开发过程中还会遇到很多麻烦。所以,还是乖乖用cmake吧!

安装前,需要获得下面的文件,我这里以vtk5.0为例,在winxp+vc6.0linux+gcc下实现
linxu
   
预安装gcc3.0
vtk-5.0.0.tar.gz     vtk
的源码
vtkdata-5.0.0.tar.gz   vtk
例子所需要的数据
cmake-2.4.3-Linux-i386.tar.gz   cmake
程序,现在从官网上下载,是免编译的

windows

预安装vc6.0
vtk-5.0.0.zip    vtk
的源码
vtkdata-5.0.0.zip  vtk
例子所需要的数据
CMSetup243-win32.exe   cmake
安装程序
上面不同系统下,vtk源码以及data其实是一样的,只不过使用了不同打包工具。另外,cmake版本的选择是根据vtk版本来定的,比如vtk5.0所需要的最低cmake版本好像是2.0,这里我们索性用更新的2.4

三、windows下的vtk安装
1
、安装cmake
这个应该很简单吧,windows下安装软件是傻瓜化的,运行CMSetup243-win32.exe,不停地点击下一步就行了
2
、解压两个压缩包,建立所需文件夹
我不喜欢直接在源码里编译,而是另外建立一个bin文件夹。比如我把c:\vtk\作为我们的主目录,将vtk源码解压在vtk5.0这个文件夹中,把data解压在vtkdata这个文件夹中,再建立一个空的文件夹取名为bin。注意,.\vtk5.0下面,应该就是一大堆文件夹和文件,.\vtkdata下面应该也可以发现几个子文件夹。

3
、运行cmake
首先,将源码和编译工作目录两个目录添好,在这个例子中,sourse code目录是c:\vtk\vtk5.0\build 目录是c:\vtk\bin\
再按configure按钮,cmake软件会让你选择需要使用的编译器,这里我们选vc6.0,然后,cmake就会对系统进行扫描了,停下来之后,我们就可以修改cmake选项了。
修改cmake选项。这个环节还真不好说,一般vtk的初学者只需要用默认设置就行了。我只提醒一些比较重要的选项:
build_examples:
就是询问是否编译vtk中的例子,如选则on,就要花时间把vtk的例子编译一遍,我一般不选
build_testing: test code
就是vtk开发者用来测试 vtk代码的一些测试代码,我们常常把它们当成学习vtk的例子,与build_examples类似,是否编译他们,看个人喜好。

build_shared_libs:
如果设置为off,就只会生成lib文件,用于开发肯定是够了。如果设置为on,将会多生成dll文件。他们的区别不是我这里说得清楚的,反正如果用静态库编程,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,应用程序必须找到动态库才能运行,但尺寸可以做得比较小

cmake_install_prefix:
这个比较重要,就是以后要安装vtk的路径。有些人又要问,我编译完了不就可以用vtk了吗,为什么还要安装?对,不安装其实可以,安装的好处就是可以从 1G多的文件中提取出.h .lib .dll等精华,安装在指定目录下,并修改系统环境变量

vtk_data_root:
一般地,cmake可以自己找到vtkdata的路径,但如果没有,把c:\vtk\vtkdata\填上即可,告诉cmakevtk需要的数据都在哪里

vtk_use_parallel:
对于想用vtk做并行计算的朋友,要把这个选上,对于只想学学vtk的,保持默认off

vtk_use_guisupport:
很多人把vtk安装好了,却无法运行vtk中与mfc混合编程的例子,提示错误都是缺少vtkmfc.lib,问题就出在这个选项,我们必须把它设置为 on,再次configure之后,会出现一个新的选项vtk_use_mfc,把它也设置为on就行了。

提示:在cmake中,有些选项是依赖于另一些选项的,比如vtk_use_guisupportvtk_use_mfc,当我们禁用vtk_use_guisupportvtk_use_mfc是看不到的。

修改完cmake选项以后,不停的按configure按钮,直到没有选项显示为红色,而且此时,ok按钮可用,点击ok按钮,就可以生成vc的工程文件了。

4
、用vc6.0编译
vc6.0打开bin目录下的vtk.dsw文件,因为文件很多,打开速度会有些慢。打开后,直接build。编译的用时和计算机性能,以及cmake中的一些选项有关,一般1个小时内可以完成。结果保存在.\bin\bin目录下。
编译也会出现不成功的时候,就要看编译器提示的错误类型来处理了!

5
、安装
vc6.0打开bin目录下的install.dsp文件,不用理会提示的错误,直接build。编译结果就会安装在cmake_install_prefix设定的目录下。这个时候,把c:\vtk目录删除都行。当然,建议保留,也许以后还要更改cmake选项,再次修复编译呢。cmake会检查到改动,只处理改动过的地方,没有改动过的就不要重新编译了。