1、CMake的安装
CMake安装是用来对VTK编译前的配置工作。此博客中使用的是CMake2.8。CMake的下载可到https://cmake.org/网站上进行下载。
2、VTK源码
VTK源码直接从VTK的官方网站上下载得到,此博客中下载的是vtk-5.10.1.zip和vtkdata-5.10.1.zip两个压缩包。其中vtk-5.10.1.zip是VTK的源码,vtkdata-5.10.1.zip是VTK使用中的数据文件,这个文件也可以不用下载。
http://www.vtk.org/download/
在D:\Program Files\目录下新建三个目录。将vtk-5.10.1.zip中的文件解压到VTKSrc文件夹,vtkdata-5.10.1.zip中的文件解压到VTKData文件夹。VTKBin文件夹用来放CMake产生的工程文件和编译后的文件。
解压完毕后各目录的结构如下:
VTKSrc
VTKData
3、CMake配置项目
打开CMake,输入源码和输出文件路径,然后进行配置。设置以下几个配置项:
1、BUILD_EXAMPLES 该选项位于BUILD分组中。该选项表示是否编译VTK中的例程。不勾选状态下时可以缩短编译的时间,需要学习VTK中自带例程的可以选择该项。这里不选择该项。
2、BUILD_SHARED_LIBS 同样位于BUILD分组中。选中代表编译生成DLL文件,也就是生成动态链接库,不选中时编译成静态库。
3、BUILD_TESTING 处于BUILD分组。选中代表编译测试代码。此处不选中,为了缩短编译时间。
4、CMAKE_INSTALL_PREFIX 处于CMAKE分组中,指向VTK的生成路径,这里使用其默认路径C:\Program Files (x86)\VTK。
5、VTK_DATA_ROOT 处于VTK分组中,VTKData.zip解压的路径,这里可以手动修改到D:\Program Files\VTKData。
6、VTK_USE_GUISUPPORT 处于VTK分组中,表示是否支持GUI。为了后续使用MFC界面,这里勾选该选项。
需要注意的是,在点击Config之后会出现VTK_USE_MFC选项,需要勾该选项再次进行Config。
Config之后没有红色标记的时候就可以进行Generate了。
4、在VS2010中编译项目
如果前面的步骤没有问题,在VTKBin目录下就会生成以下文件:
打开VTK.sln工程文件,然后打开“生成” -> "生成解决方案"。这时候项目就开始编译了,编译的时间依据电脑的性能而定,一般在半小时左右项目编译完成。
编译完成之后,按下图选择。
这时候会在我们之前选择的VTK生成目录下生成我们需要的lib文件,头文件,dll文件等等。由于默认情况下生成文件的目录是在C:\Program Files (x86)\VTK。可以到该目录下检查是否有我们想要的文件产生。后续我们需要用到的就是这三个文件夹下的内容了。
5、测试VTK编译结果
在编译完成之后,建立一个win32控制台应用程序来测试安装编译结果。
打开vs2010,新建一个win32控制台应用程序。创建完成之后,向项目中添加一个cpp文件。随后配置我们的项目。在菜单栏中选择视图->属性管理器。
由于目前使用的是Debug版本编译,所以在此我们只需要去设置Debug下的配置文件。双击打开Microsoft.Cpp.win32.User。在包含目录中添加VTK生成目录下的include文件夹,这里是C:\Program Files (x86)\VTK\include\vtk-5.10。在库目录中添加VTK生成目录下的lib文件夹,这里是C:\Program Files (x86)\VTK\lib\vtk-5.10。
配置完成后就可以再cpp文件中写入程序代码了。可以写入以下程序代码来测试程序。
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkProperty.h"
#include <stdio.h>
#include "windows.h"
int main()
{
int k = 0 ;
vtkConeSource *cone = vtkConeSource::New();
cone->SetHeight(3.0);
cone->SetRadius(1.0);
cone->SetResolution(10);
vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();
coneMapper->SetInputConnection(cone->GetOutputPort());
vtkActor *coneActor = vtkActor::New();
coneActor->SetMapper(coneMapper);
vtkRenderer *ren1 = vtkRenderer::New();
ren1->AddActor(coneActor);
ren1->SetBackground(0.1,0.2,0.4);
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);
renWin->SetSize(300,300);
int i = 0;
for (;i<360;++i)
{
renWin->Render();
ren1->GetActiveCamera()->Azimuth(1);
Sleep(10);
}
scanf("%d",&k);
cone->Delete();
coneMapper->Delete();
coneActor->Delete();
ren1->Delete();
renWin->Delete();
return 0;
}
这时候编译会发现有错误,那是因为找不到编译时候需要的lib文件。我们需要在此添加依赖库文件。菜单栏中选择项目->属性。打开链接器,选择输入。
在附加依赖项中添加程序中必要的lib文件。
这时候再去编译程序发现没有错误了,但是运行程序的时候会跳出没有安装必要的dll文件。这是程序无法找到运行时的动态链接库导致的。解决办法有两种:
1、将VTK生成目录下,也就是C:\Program Files (x86)\VTK\bin目录下的dll文件全部拷贝到C:\Windows\System32文件夹下。
2、或者添加系统环境变量。回到计算机桌面,右键计算机,属性,选中高级系统设置。选中高级选项卡。
点击环境变量,在PATH变量下加入C:\Program Files (x86)\VTK\bin。如果打开后没有PATH,可以自行添加PATH变量。如果打开后有PATH,且里面已经有内容,那么在添加的时候需要注意,每一个值之间是需要使用分号 ; 隔开的。(这里的分号要确保是在英文状态下输入的,也就是必需要是半角的字符。)
环境量配置完成后一般不会立即生效,这时可以重新启动电脑。
按照上述配置完成就可以运行程序了。运行结果如下。